Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Duvida

Bom, pessoal estou treinando com o java aqui seguindo todas as aulas que ja vi, e não to conseguindo uma determinada ação, me ajudem kkk. vamos la. primeiramento, só estou treinando no java kkk.

fiz uma classe Vendedor

public class Vendedor {
    private String nome;

public String getNome() {
return nome;
public void setNome(String nome) {
this.nome = nome;

Depois fiz uma classe produto {

// outros atributos.
Vendedor vendedor = new Vendedor();
private List<Produto> produtos = new LinkedList<>();
public void adicionarProduto(double quantidade) {
produtos.add(new Produto());

public void mostrarProduto() {
// aqui é minha duvida pois quero mostrar o nome do vendedor..
System.out.println("Nome : " + vendedor.getNome());

E sempre me retorna null, ja tentei de tudo, ja tentei fazer uma referencia, do tipo produto e retorna null também, o unico jeito que deu certo, coloquei no paramentro exemplo.

public void adicionaProduto(double quantidade, String nomeVendedor) {
vendedor.setNome(nomeVendedor); // desse jeito aqui deu certo.

mais tem um problema queria definir os atributos nas propria classe, no main fiz assim.

public class Testando {
    public static void main (String [] args) {
    Vendedor v = new Vendedor();
    v.setNome("Qualquer nome");
    Produto p = new Produto() {
    p.adicionaProduto ......
    p.mostraProduto ();

mais desse jeito sempre me retorna um valor null no vendedor, me ajudem kkk :(

4 respostas

Oi Allison, tudo bem ?

Bem legal essa dúvida cara, seguinte... Vamos lembrar um pouquinho do que acontece na jvm ok ?

Toda vez que você dá um new é criado um novo endereçamento na memória para o tipo que você criou, dessa forma o que está acontencendo é o seguinte, você está criando um vendedor dentro do seu método main certo ? E além desse Vendedor, você está criando outro dentro da sua classe produto, e quando você pede para aquela instância exibir o seu nome, ele vai até a referência e lá dentro busca a String, que é uma classe ou seja também terá um endereçamento na memória, entrentranto como você não setou esse endereçamento ele é null por padrão.

O que você pode fazer é receber o Vendedor quando você for construir a sua classe Produto e lá de dentro você consegue manipular de uma forma melhor


public class Produto {

    private Vendedor vendedor;

    public Produto(Vendedor vendedor) {

        this.vendedor = vendedor;

    }

    // métodos

}

Abraços :D

E no main :


Vendedor v = new Vendedor();
v.setNome("Nome");
Produto p = new Produto(v);

//deve mostrar o nome agora !
p.mostra();
solução!

Agora mostrou mano, não tava pensando em criar um construtor kkk, valeu!!

Boa !!!

Bons estudos !

O que precisar pode abrir outro tópico :D