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

我试图在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();

}

它似乎工作正常,但现在我遇到了一个障碍。我希望
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,它可以工作。我认为另一个解决方案是向
添加一个类型参数,如
,但这会使类型复杂化很多。谢谢,它可以工作。我认为另一个解决方案是向
添加一个类型参数,如
,但这会使类型复杂化很多。