2015-04-06 101 views
0

鑑於下面的Java代碼,我想知道爲什麼向上註冊Foo<String>Foo<object>不起作用?基本上我想告訴Java,如果TS的子類,那麼Foo<T>Foo<S>的子類。我知道有一種方法可以在Scala中執行此操作,但有沒有辦法在Java中執行此操作?如果沒有,是否有解決方法來獲得下面的代碼進行編譯?Java Upcasting嵌套類型參數

class Foo<T> { 
    T t; 
    public Foo(T t) { 
     this.t = t; 
    } 
} 

class Main { 
    public static Foo<object> getFoo() { 
     Foo<String> foo = new Foo("foo"); 
     return foo; // this throws a compile time exception 
    } 
} 

回答

0

有兩個問題,

  1. Foo(T obj) {
  2. Foo<Object> foo....

下面的代碼工作正常。

class Foo<T> { 
    T obj; 
    Foo(T obj) { 
     this.obj = obj; 
    } 
} 

class Main { 
    public static Foo<Object> getFoo() { 
     Foo<Object> foo = new Foo("foo"); 
     return foo; 
    } 
}