当类具有扩展时,如何在java中定义类类型的变量?

xxls0lw8  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(365)

我有一门课:

public class FindPath<T,N extends Path<T,N>> {

    public FindPath() {

   // the constructor ...
    }
}

和路径接口:

public interface Path<N, P extends Path<N,P>>
            extends Iterable<N>, Comparable<Path<?,?>>

其中t、p和n是泛型类型。我想在另一个类中定义一个变量findpath,并调用它的构造函数,基本上我想这样:

public class TestD {

private FindPath <WNode,WNodePath extends Path<WNode,WNodePath>> Find_Path = new FindPath;

}

( WNode,WNodePath 是我在泛型类型中使用的另一个类)
我做错什么了?如何做到这一点?
还有一个问题:| |的 WNodePath 类的定义如下:

public class WNodePath implements Path<WNode, WNodePath > { .. }

路径接口是 Comparable ,这是否意味着 WNodePath 是可比的,这意味着我可以用它 compareTo() 优先级队列中的函数?

pexxcrt2

pexxcrt21#

当你宣布 FindPath 你不用的参考资料 extends ,用于提供合法用于该类型参数的类的边界(限制)(当您有一个通配符类型参数时,可以使用extends,但这与此无关,请参阅https://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html)
只要说:

private FindPath<WNode,WNodePath> findPath = new FindPath<>();

它编译。
对, WNodePath 工具 Comparable ,通过 Path .

相关问题