簡體   English   中英

當 class 擴展時,如何在 java 中定義 class 類型的變量?

[英]how to define a variable of a class type in java when the class has extends?

我有這個 class:

   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 是泛型類型。 我想在另一個 class 中定義一個變量 FindPath,並調用它的構造函數,基本上我想要這樣的東西:

public class TestD {

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

} 

WNode,WNodePath是我在泛型類型中使用的另一個類)

我究竟做錯了什么? 如何做到這一點?

還有一個問題:|| WNodePath class 的定義如下:

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

路徑接口是Comparable ,這是否意味着WNodePath也是 Comparable ,這意味着我可以在優先級隊列中使用它compareTo() function 嗎?

當您聲明FindPath引用時,您不使用extends ,它用於為該類型參數合法使用的類提供邊界(限制)。 (當您有通配符類型參數時,您可以使用擴展,但這與此處無關,請參閱https://docs.oracle.com/javase/tutorial/extra/generics/wildcards.ZFC35EZ8830D5FC69D807BADE5Z

說啊:

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

哪個編譯。

是的, WNodePath實現了Comparable ,通過Path傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM