相关疑难解决方法(0)

有没有办法用类型变量引用当前类型?

假设我正在尝试编写一个函数来返回当前类型的实例.有没有办法T引用确切的子类型(所以T应该B在课堂上引用B)?

class A {
    <T extends A> foo();
}

class B extends A {
    @Override
    T foo();
}
Run Code Online (Sandbox Code Playgroud)

java generics types

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

如果参数是同一个接口的不同实现,compareTo()返回什么?

有接口

interface Animal extends Comparable<Animal> {
}
Run Code Online (Sandbox Code Playgroud)

和2个班级

class Dog implements Animal {

}
Run Code Online (Sandbox Code Playgroud)

class Cat implements Animal {

}
Run Code Online (Sandbox Code Playgroud)

compareTo(Animal o)当争论不是同一个具体实施时应该返回什么Animal

应该扔IllegalArgumentException吗?

例如,如果我将Dog实例传递给Cat.compareTo().我无法比较它们,因为它们是不同的类型.我不能称super.compareTo()他们的超级是Object没有实现的类型Comparable.铸造DogCat会抛出ClassCastException.

java interface comparable

0
推荐指数
1
解决办法
72
查看次数

标签 统计

java ×2

comparable ×1

generics ×1

interface ×1

types ×1