Java Upcasting嵌套类型参数

时间:2015-04-06 17:58:08

标签: java java-6 type-parameter upcasting

鉴于下面的Java代码,我想知道为什么向Foo<String>转换为Foo<object>不起作用?基本上我想告诉Java,如果TS的子类,那么Foo<T>Foo<S>的子类。我知道有一种方法可以在Scala中执行此操作,但有没有办法在Java中执行此操作?如果没有,是否有解决方法来获取以下代码进行编译?

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
    }
}

1 个答案:

答案 0 :(得分:0)

有两个问题,

  1. Foo(T obj) {
  2. Foo<Object> foo....
  3. 以下代码运行正常。

    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;
        }
    }