作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下情况:有一个抽象类(abs
)和两个从abs
扩展的类(con1
和 con2
)
现在我希望abs有一个带有参数的抽象函数,其中参数的类型必须是类本身的类型。
我在 abs
类中尝试了以下操作:
public abstract void foo(abs i);
以及 con1
和 con2
中的以下内容:
public abstract void foo(con1 i);
public abstract void foo(con1 i);
但这没有用。解决此类问题的一般方法是什么?
最佳答案
不,基本上没有实现该方法。根据您获得的声明,我应该能够编写:
abs x = new con1();
abs y = new con2();
x.foo(y);
听起来像你想要的:
public abstract class Abstract<T extends Abstract<T>>
{
public abstract void foo(T t);
}
然后:
public final class Concrete1 extends Abstract<Concrete1>
{
@Override public void foo(Concrete1 x) { ... }
}
请注意,这并没有完全强制执行它,因为您仍然可以编写:
public final class Evil extends Abstract<Concrete1>
...但至少当每个人都“按规则行事”时它才有效。
关于具有泛型参数的 Java 抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29143435/
我是一名优秀的程序员,十分优秀!