2012-02-06 49 views
4

在完全跳過它們之後,在Bar類中使用通配符類型是否有任何優勢?Java未綁定的通配符類型

public class Foo<T> {} 

public interface Bar { 
    public void addFoo(Foo<?> foo); 
    public Foo<?> getFoo(String name); 
} 
+0

你可能想看看http://stackoverflow.com/questions/503721/generics-in-java-using-wildcards – assylias 2012-02-06 18:25:54

回答

6

有很多優點。

  • 他們不會產生編譯器警告像使用原始類型將
  • 他們給予更多的類型安全。例如,請考慮Foo是否爲List。如果您使用的List代替List<?>,你可以這樣做:

    myBar.getFoo("numbers").add("some string"); 
    

    即使列表只應該包含Number秒。如果您返回List<?>,那麼您將無法將任何東西添加到它(除了null),因爲列表的類型未知。

  • 他們記錄的東西比原始類型完全不同,即Foo是在一些未知的,但具體類型類型。