我怎样才能有一个接受“我的类型”类型参数的抽象方法?

杰克·M

假设我有一个带有抽象方法的抽象类Animal

public abstract Animal mateWith(Animal mate);

问题是,如果我创建子类Snake和Armadillo,则这样的调用将是合法的:

mySnake.mateWith(myArmadillo);

但是我只希望蛇能够与蛇交配。我需要能够定义如下内容:

public abstract Animal_Of_My_Class mateWith(Animal_Of_My_Class mate);

这在Java中可行吗?

安迪·特纳(Andy Turner)

自力更生的仿制药:

abstract class Animal<T extends Animal<T>> {
  abstract T mateWith(T mate);
}

然后:

class Animal_Of_My_Class extends Animal<Animal_Of_My_Class> {
  Animal_Of_My_Class mateWith(Animal_Of_My_Class mate) { ... }
}

请注意,您不能限制T为实现类(例如,您不能要求Animal_Of_My_Class extends Animal<Animal_Of_My_Class>而不是Animal_Of_My_Class extends Animal<Another_Animal_Of_My_Class>)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我怎样才能有效地编写从一个for循环的(700000行),内容为从Java有效的文件?

我怎样才能添加行号,以我的输出并检测,如果没有找到一个文件?

我怎样才能让一个有界类型参数的方法排除一个子类?

我有一个移动网站,但其负载已缩小。我怎样才能解决这个问题?

我怎样才能更好地抽象?

我怎样才能正确呈现LinkedIn配置文件json对象,我有一个好主意(反应)

我怎样才能有效地形成一个2数组的对象

我怎样才能有一个<core-selector>内联?

我怎样才能漂亮地打印一个带有其字段命名的结构?

我怎样才能提供一个数组作为函数或脚本的位置参数?

我怎样才能适当地模拟出一个返回yield的方法?

我怎样才能写一个没有重复的列表,仅用于if和boolean

我怎样才能有一个透明的 png 图像,只能从 *front* 看到?

我怎样才能创建一个同时接受 Num 和 Maybe Num 的函数?

我怎样才能返回一个 Promise?

我怎样才能写一个指向函数?

我怎样才能得到一个有 m 个尾巴的列表?Python

我怎样才能让一个 for 语句有一个 else

我怎样才能把这个静态函数变成一个允许参数的函数?

我怎样才能重复一个模式?

我怎样才能创建一个特征来给我两种类型中较大的一个?

我怎样才能返回一个循环?

我怎样才能在 Dart 的子类中拥有一个具有固定类型的动态成员的类?

我怎样才能拥有一个实例变量可能是不同类型的 Java 类?

我有一个有效的代码,但我怎样才能让它更优雅

在 Kubernetes 中,我怎样才能有一个严格的最小数量的 pod 来部署?

Flutter:我怎样才能有一个多行 TextFormField,当我按下回车键时不会换行,而是执行一个函数?

我怎样才能省略一个网址,以便我到达我想要的网址

使用反射,我怎样才能找到接受反射库本身中定义的参数的方法?