Ambos possuem atributos equivalentes. A String nome - B String nome.
Quando o atributo de A recebe o valor do atributo de B e o ultimo é nulo, é disparada uma NullPointerException.
objA.setNome() = objB.getNome();
Se os dois atributos são objetos do tipo String, por que um não aceita o nulo do outro? Por exemplo, se eu escrever objA.setNome = null; não ocorre erro. Porque da outra forma ocorre erro se o valor a ser passado é o mesmo?
99% dos métodos set, você passa o valor no método e não faz algo do tipo
objA.setName() = "nome";
//Faz isso aqui
objA.setName("nome");
Isso aqui:
objB.getName();
Só vai lançar uma NullPointerException se por acaso você efetuar alguma manipulação com o valor que será retornado no método get OU se o objB for nulo.
Caso contrário, não vai lançar esse tipo de exceção.
Nem compila, porque o lado esquerdo do sinal de igual não é uma variável… A não ser que você não esteja programando em java.
NullPointerException é geralmente um problema de fé: você vai na fé de que alguma coisa está inicializada mas não está. Por exemplo, no código abaixo
public class Teste {
static Teste x;
public String doSomething() { return "Ipeeeee!"; }
public static void main(String[] args) {
x.doSomething(); // não vai funcionar. Ninguém falou o que tem no x, só o tipo de coisa que x pode ter...
}
A correção:
public class Teste {
static Teste x = new Teste(); // AHHHH, agora sim! Eu sei que x contém uma *nova instância* de teste.
public String doSomething() { return "Ipeeeee!"; }
public static void main(String[] args) {
x.doSomething(); // agora vai funcionar.
}