java - 具有不同对象参数的重载构造函数

标签 java oop constructor

Possible Duplicate:
Method Overloading for NULL parameter

关于用 Java 编码时的“最佳实践”的快速问题。我有一个可以用两种不同类型的对象(HashMap 或我称为 SearchTerm 的单独类)构造的类。在客户端通过构造函数给出空参数的情况下,我通常有很好的处理程序,但如果确实发生这种情况,虚拟机就会崩溃并说该参数不明确。 (这是有道理的,因为 null 参数可能引用任一对象。)

这些情况通常如何处理?允许单独的对象作为参数是一种不好的形式吗?

最佳答案

除非我误解了某些内容,否则只有当您尝试使用 null 作为参数调用构造函数时,才会出现此歧义错误。如果您想解决此问题,可以将参数强制转换为您要使用的类,如下所示:

new YourClass((SearchTerm) null);

这样编译器就知道,即使参数为 null,它也应该将其视为 SearchTermnull 实例。

如果您的 SearchTerm 实例恰好为 null,则应该不会有问题:

SearchTerm searchTerm = null;
new YourClass(searchTerm);

应该不会出现歧义错误,因为编译器知道实例是什么类型,即使它是 null。

关于java - 具有不同对象参数的重载构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8935983/

相关文章:

java - 围绕 superfirst 工作

java - 在我的 Java 应用程序中发现 ClassCastException

java - ProGuard 的 "keep"参数中的泛化

java - 实现通用接口(interface)的正确方法

c++ - 声明指向 *this* 对象的指针的优点或原因是什么?

C#,将字符串变量转换为类变量

python - 如何在 Python 中调用 super 构造函数?

java - 自动预测文本字段

java - 如何检查ArrayList中的所有项目?

matlab - 我应该在 MATLAB 中的属性名称后加上分号吗?