Sna*_*gon 2 java generics inheritance
我想编写一个方法来获取与参数类型相同的对象,但要在基类中声明它,但我不希望它接受从同一个基础派生的其他对象.
例如,我有类Animal,我想写一个方法sonOf(Animal a),但我不希望有人这样做:
Animal bolt = new Dog();
Animal mittens = new Cat();
bolt.sonOf(mittens);
Run Code Online (Sandbox Code Playgroud)
我认为需要一个泛型,但我不确定如何正确使用它.
谢谢.
嗯.你可以尝试,例如:
abstract class Animal<T extends Animal<T>> {
abstract void sonOf(T son);
}
final class Dog extends Animal<Dog> {
void sonOf(Dog dog) { ... }
}
final class Cat extends Animal<Cat> {
void sonOf(Cat cat) { ... }
}
Run Code Online (Sandbox Code Playgroud)
然后你得到
final Cat mom = new Cat();
final Cat child = new Cat();
child.sonOf(mom);
final Dog dad = new Dog();
child.sonOf(dad); // "The method sonOf(Cat) in the type Cat is not applicable for the arguments (Dog)"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
62 次 |
最近记录: |