Java 如何允许在使用泛型时使用更精确的返回类型?
我试图在Java中建立类似“动态”的模型。有一个表示一组允许值的通用接口Java 如何允许在使用泛型时使用更精确的返回类型?,java,generics,Java,Generics,我试图在Java中建立类似“动态”的模型。有一个表示一组允许值的通用接口域,还有一个表示特定值的接口点。像这样: public interface Domain<D extends Domain<D>> { Set<Point<D>> points(); } public interface Point<D> { // D works a bit like a phantom type public D type
域
,还有一个表示特定值的接口点
。像这样:
public interface Domain<D extends Domain<D>> {
Set<Point<D>> points();
}
public interface Point<D> { // D works a bit like a phantom type
public D type();
}
它似乎工作正常,但现在我遇到了一个障碍。我希望
Symbols
的points()
方法返回类型Set
。这当然不起作用,因为Set
不是Set
的子类型。如何使其工作?您的界面域
应为其点
方法接受通配符
interface Domain<D extends Domain<D>> {
Set<? extends Point<D>> points();
}
接口域{
设置您的接口域
应为其点
方法接受通配符
interface Domain<D extends Domain<D>> {
Set<? extends Point<D>> points();
}
接口域{
SetThank,它可以工作。我认为另一个解决方案是向域
添加一个类型参数,如域
,但这会使类型复杂化很多。谢谢,它可以工作。我认为另一个解决方案是向域
添加一个类型参数,如域
,但这会使类型复杂化很多。