相关疑难解决方法(0)

使用泛型定义抽象方法

我一直在阅读关于泛型的很多内容,但我仍然有一些在Java中实现简单层次结构的基本问题.目标是定义一个抽象方法,它将比较同一个类的两个对象,如果对象来自不同的类,它应该返回false.例:

我们定义抽象类Sound

abstract class Sound{
    public boolean check(Sound d){return false;};
}
Run Code Online (Sandbox Code Playgroud)

一些扩展Sound的类和另一个从它扩展的抽象类,如Alarm

abstract class Alarm extends Sound{
    @Override
    public boolean check(Alarm d){//Do something and return boolean};
}
Run Code Online (Sandbox Code Playgroud)

还有一些从中扩展的类.

简单的解决方案是将方法定义为显示的方法并且它将起作用,但我觉得有更好的方法来强制执行层次结构,因此Sound类定义该方法应仅用于具有相同类的参数.

我用Generics试过的:

abstract class Sound{
    public <T extends Sound> boolean check(T d){return false;};
}

abstract class Alarm extends Sound{
    @Override
    public <T extends Alarm> boolean check(T d){//Do something and return boolean};
}
Run Code Online (Sandbox Code Playgroud)

要么

abstract class Alarm extends Sound{
    @Override
    public boolean check(Alarm d){//check and return boolean};
}
Run Code Online (Sandbox Code Playgroud)

Java抱怨因为编译器我没有覆盖Alarm中的check方法.什么可能丢失的任何线索?

java generics class

3
推荐指数
1
解决办法
4182
查看次数

标签 统计

class ×1

generics ×1

java ×1