使用不同的对象参数重载构造函数

时间:2012-01-20 02:10:37

标签: java oop constructor

  

可能重复:
  Method Overloading for NULL parameter

使用Java编写代码时的“最佳实践”快速提问。我有一个可以使用两种不同类型的对象构建的类(HashMap或我称之为SearchTerm的单独类)。在客户端通过构造函数提供null参数的情况下,我通常有非常好的处理程序,但如果确实发生这种情况,则VM会崩溃并说参数不明确。 (这是有道理的,因为null参数可能是指任何一个对象。)

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

1 个答案:

答案 0 :(得分:4)

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

new YourClass((SearchTerm) null);

这样编译器知道即使参数是null,它也应该像null的{​​{1}}实例一样对待它。

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

SearchTerm

应该没有歧义错误,因为编译器知道实例的类型,即使它是null。