今天读代码发现有一行代码很奇怪:
setData((Hashtable)null);
为什么要对null进行一个转型呢?仔细一研究,发现原来是函数重载引起的:
这个类里面有2个setData方法,而且参数都只有一个,如下:
setData(DefaultEntity e);
setData(Hashtable e);
Java会根据传入的参数来判断调用的是那个方法,但是如果传入的值是null,那么就需要进行一个类型转换,来告诉Java需要调动的是那个函数,否则就会引起混淆。编译器也通不过。
也可以写成这样:
Hashtable ht = null;
setData(ht);