因此,如果我有一个方法,其中变量可以是一堆不同类的实例,其中只有一些具有特定的实例变量,如何在方法中使用此实例变量而不获取{{1}错误?
考虑这段代码:
cannot be resolved or is not a field
其中void method1(){
SuperType randomInstance = getRandomInstance();
if(randomInstance.stop == true) //do something
}
是SuperType
可以容纳的所有可能实例的超类。
但是,实例不一定有变量randomInstance
所以我收到错误stop
所以我的问题是,有没有办法绕过这个或者我是否必须为不同的实例创建不同的方法,具体取决于它们是否具有变量stop cannot be resolved or is not a field
?
答案 0 :(得分:2)
如果stop
属性可以被视为SuperType
的某些子类共享的行为,您可以考虑定义一个接口 - 让它调用它{{1 - 拥有方法Stoppable
(或者getStop
如果它是布尔值)和isStopped
。
然后你的代码看起来像:
setStop
答案 1 :(得分:1)
为有问题的类提供一个共同的超类型或接口(它们似乎从您的代码中有一个 - SuperType
),并在超类型上定义实例字段(它不是“变量”)或定义接口上的getter函数。 (实际上,即使超类型是一个类,通常最好使用getter来定义字段,即使你可以使它成为public
或protected
实例字段。)
答案 2 :(得分:1)