public class B1
{
public void a (Object o)
{
System.out.println("Object!");
} public void a (String o)
{
System.out.println("String");
} static public void main(String []a)
{
B1 b=new B1();
b.a(null);
}
} 为什么输出会是 String,希望解析!
还有String是Object的子类,那两个重载的函数应该怎样理解!还有JAVA里怎样使用 assert 关键字的?
{
public void a (Object o)
{
System.out.println("Object!");
} public void a (String o)
{
System.out.println("String");
} static public void main(String []a)
{
B1 b=new B1();
b.a(null);
}
} 为什么输出会是 String,希望解析!
还有String是Object的子类,那两个重载的函数应该怎样理解!还有JAVA里怎样使用 assert 关键字的?
Null can be converted to type String and type Object (JLS 5.1.4) so both
methods are applicable (JLS 15.12.2.1).However, String is a subclass of Object, and so foo(String) is more specific
than foo(Object) (JLS 15.12.2.2). So the call is not ambiguous and resolves
to foo(String) as required.
我觉得Java在实现上,也是这样的。
这样null作为NullClass的唯一实例。就会调用这个实例的toString方法。以上纯属猜测
http://www.blogjava.net/loocky/archive/2006/04/13/40793.html
'==========================================================================
这个文章太长了!可不可以简明地介绍一下!