Possible Duplicate:
Method Overloading for NULL parameter
关于用 Java 编码时的“最佳实践”的快速问题。我有一个可以用两种不同类型的对象(HashMap 或我称为 SearchTerm 的单独类)构造的类。在客户端通过构造函数给出空参数的情况下,我通常有很好的处理程序,但如果确实发生这种情况,虚拟机就会崩溃并说该参数不明确。 (这是有道理的,因为 null 参数可能引用任一对象。)
这些情况通常如何处理?允许单独的对象作为参数是一种不好的形式吗?
最佳答案
除非我误解了某些内容,否则只有当您尝试使用 null
作为参数调用构造函数时,才会出现此歧义错误。如果您想解决此问题,可以将参数强制转换为您要使用的类,如下所示:
new YourClass((SearchTerm) null);
这样编译器就知道,即使参数为 null
,它也应该将其视为 SearchTerm
的 null
实例。
如果您的 SearchTerm
实例恰好为 null,则应该不会有问题:
SearchTerm searchTerm = null;
new YourClass(searchTerm);
应该不会出现歧义错误,因为编译器知道实例是什么类型,即使它是 null。
关于java - 具有不同对象参数的重载构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8935983/