2011-05-17 194 views
0

我想要做這樣的事情:在多個類中使用相同的通配符類型

public class Tree<A extends Ability>{ 
    ... 
} 

在樹中我要使用從能力繼承的對象。該樹由節點,有作爲有效載荷的能力:如果我嘗試使用在樹的方法

public class Node<A extends Ability>{ 
    public A getAbility(){ ... } 
    ... 
} 

,說搜索,我得到一個錯誤:

public void read(){ 
    Node node = searchForTheNode(...); 
    node.getAbility(); // <- this gives me an error 
} 

的錯誤說,不兼容的類型:java.lang.Object和A. 我錯過了什麼,如何在樹和節點中使用相同的泛型類型?

回答

1

如果樹<>和節點<>類是獨立的,則「A是不一定相同的事情。如果你正在編寫Tree和Node。我想裏面樹巢節點:

class Tree<A extends Ability> { 

    static class Node { 
     A method() { 
      A a = null; 
      return a; 
     } 
    } 
} 

這樣你限制「A」一次,「A」節點和樹指的是同一類型。

+0

不幸的是,這是行不通的。錯誤是:「不能訪問'package.Tree'中的'A'」 – thalador 2011-05-18 17:46:48

+0

好吧,如果內部類不是靜態的,似乎工作! – thalador 2011-05-18 17:47:49

0

試試這個:Node<A> node = searchForTheNode(...);