我試圖在類級別使用通配符,我收到以下錯誤我們可以使用通配符一流水平在java中
Test.java:3: error: <identifier> expected
class Test1<? extends Object,Cloneable,Serializable>
^
Test.java:3: error: '{' expected
class Test1<? extends Object,Cloneable,Serializable>
^
我試圖在類級別使用通配符,我收到以下錯誤我們可以使用通配符一流水平在java中
Test.java:3: error: <identifier> expected
class Test1<? extends Object,Cloneable,Serializable>
^
Test.java:3: error: '{' expected
class Test1<? extends Object,Cloneable,Serializable>
^
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>();
它實際上是沒有意義的類定義中使用通配符。
例如:
class MyClass<T extends MyInterface>
你需要一個T,你會的東西像會員private T myT
或方法void doIt(T t)
使用你的類裏面。
具有不能使用的泛型類型的要點是什麼?
通配符泛型是Java的方法來處理variance
錯誤說加<identifier>
所以不是?與例如叔 對於實例代替:
class Test1<T extends Object,Cloneable,Serializable>
因爲類,你需要添加一些標識,不同的方法!
你能顯示你的代碼嗎? –
想一想 - 你爲什麼要這樣做?你將如何使用這種類型的信息? – Qix