Ta certo, a JVM procura pelo objeto mais específico para passar um objeto para um método.
Mas entre String e StringBuffer, a JVM não sabe qual o Objeto mais específico. E assim, da erro de compilação.[/quote]
eu tava falando do codigo do cara la em cima hehhee. o primeiro
em relacao a String e StringBuffer, eu concordo
Não é que null é mais específico para String.
String que é mais específico do que Object, pois String extende a Object.
E no caso de String e StringBuffer, todas as 2 extendem a Object, e a VM não sabe qual é o mais específico.
No seguinte código:
class A{}
class B extends A{}
class C extends B{}
class D {
public static void main(String args[])
D d1 = new D();
d1.m(null);
}
void m(A a){ System.out.println("A"); }
void m(B b){ System.out.println("B"); }
void m(C c){ System.out.println("C"); }
}
O que vai ser impresso é “C”, porque a classe C é mais específico que do que as class A e B.