我希望这就像我脑海中一样清晰。

我想我了解多态的本质。但是我想到了一个主意。想象一下,我需要一个层次结构中更底层的类的服务:

java.lang.Object

..

java ... TheirClass实现ItheirClass

public class MyClass1 {
 private Object theirClass;

 public MyClass1(Object thierClass) {
    this.theirClass = (ItheirClass) theirClass;
 }
}


要么

public class MyClass2 {
 private ItheirClass theirClass;

 public MyClass2(ItheirClass thierClass) {
    this.theirClass = theirClass
 }
}


首选哪个,为什么?在这两者中或仅在第一个实现中都需要对传递给构造函数的对象进行“ instanceOf”检查吗?谢谢。

最佳答案

后者是优选的。

如果您犯了一个错误并为每个参数提供了错误类型的参数,则后者将在编译时提醒您,但前者直到运行时才会失败。

一个较小的问题是,类型转换不是Java中的自由操作,因此,如果在大量使用的代码中进行类型转换,则使用前者不会带来任何好处,因此您将承担较小的运行时性能负担。

07-23 22:11