0

鉴于下面的 Java 代码,我想知道为什么向上Foo<String>转换Foo<object>不起作用?本质上,我想告诉 Java,如果T是 的子类S,那么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
    }
}
4

1 回答 1

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;
    }
}
于 2015-04-06T18:04:04.987 回答