【发布时间】:2016-06-03 17:19:00
【问题描述】:
我想在一个接口中指定一个实现方法必须返回一个它自己类型的类。比如克隆方法:
interface MyArray{
MyArray clone();
}
interface MyVector extends MyArray{
// ... 1d-array specific methods
MyVector clone();
}
class MyDoubleVector implements MyVector{
//...
@Override
public MyDoubleVector clone(){
//...
return new MyDoubleVector(Arrays.copyOf(data));
}
}
现在我可以打电话了:
MyVector vec1 = new DoubleVector(...);
MyVector vec2 = vec1.clone();
我想强制 MyArray 的所有实现者拥有一个克隆方法,该方法返回与实现者相同的类型。如果有一些内置的“元类型”表示“与此类/接口相同的类型”,我可以节省很多行,例如:
interface MyArray{
<ArrayOfSameType> clone();
}
并且不必重新定义扩展接口中的方法来调用vec1->vec2克隆操作,如上所示。
Java 是否有一些内置结构可以做到这一点,或者复制和粘贴大量样板代码只是 Java 程序员的悲惨命运?
【问题讨论】:
-
欢迎来到self-bound type parameters的古怪世界!
-
丑陋的代码是糟糕程序员的悲惨命运。
-
@biziclop 真是个古怪的世界,谢谢。