2015-09-06 86 views
0

我試圖在類級別使用通配符,我收到以下錯誤我們可以使用通配符一流水平在java中

Test.java:3: error: <identifier> expected 
class Test1<? extends Object,Cloneable,Serializable> 
      ^
Test.java:3: error: '{' expected 
class Test1<? extends Object,Cloneable,Serializable> 
          ^
+1

你能顯示你的代碼嗎? –

+0

想一想 - 你爲什麼要這樣做?你將如何使用這種類型的信息? – Qix

回答

1

你不能。

Wiki of WildCard

通配符?在Java中是用於實例化泛型(參數化)類型的特殊實際參數。它可以用於實例化,而不用於通用單元的定義。

1
No We cannot use Wildcards at the class level. 

Below syntax are not allowed: 
1. class A<?>{} 
2. class A<? extends Number>{} 
3. new ArrayList<?>(); 
4. ArrayList<?> al5=new ArrayList<?>(); 
5. ArrayList<? extends Number> al9=new ArrayList<?>(); 

Allowed are: 

1.ArrayList<?> al=new ArrayList<String>(); 
2.ArrayList<?> al2=new ArrayList(); 
3.ArrayList<? extends Runnable> al3=new ArrayList(); 
4.ArrayList<? super Runnable> al4=new ArrayList(); 
5.ArrayList<? super Runnable> al5=new ArrayList<Object>(); 
6.ArrayList<? super Runnable> al6=new ArrayList<Runnable>(); 
7.ArrayList<? extends Runnable> al7=new ArrayList<Runnable>(); 
8.ArrayList<? extends Runnable> al8=new ArrayList<Thread>(); 
9.ArrayList<? extends Object> al9=new ArrayList<Double>(); 
1

它實際上是沒有意義的類定義中使用通配符。

例如:

class MyClass<T extends MyInterface> 

你需要一個T,你會的東西像會員private T myT或方法void doIt(T t)使用你的類裏面。

具有不能使用的泛型類型的要點是什麼?

通配符泛型是Java的方法來處理variance

-1

錯誤說加<identifier> 所以不是?與例如叔 對於實例代替:

class Test1<T extends Object,Cloneable,Serializable> 

因爲類,你需要添加一些標識,不同的方法!

相關問題