我已经阅读了很多有关泛型的文章,但是在使用Java实现简单的层次结构方面仍然存在一些基本问题.目的是定义一个抽象方法,该方法将比较同一类的两个对象,如果对象来自不同的类,则应返回false.例:
我们定义抽象类Sound
abstract class Sound{
public boolean check(Sound d){return false;};
}
一些扩展Sound的类和从其扩展的另一个抽象类,例如Alarm
abstract class Alarm extends Sound{
@Override
public boolean check(Alarm d){//Do something and return boolean};
}
还有更多的扩展类.
一种简单的解决方案是按所示方法定义该方法,它将起作用.但是,我认为有一种更好的方法来强制执行层次结构,因此Sound类定义该方法仅应与相同类的参数一起使用.
我尝试过的泛型:
abstract class Sound{
public boolean check(T d){return false;};
}
abstract class Alarm extends Sound{
@Override
public boolean check(T d){//Do something and return boolean};
}
要么
abstract class Alarm extends Sound{
@Override
public boolean check(Alarm d){//check and return boolean};
}
Java抱怨,因为对于编译器,我没有重写Alarm中的check方法.
有什么线索可能会丢失吗?