2

我想要的实际上是这样的:

public class Foo<T> {
    // ...
}

public class Foo<T, S> {
    // ...
}

请注意,类的名称相同,但类型列表的长度不同。上面的代码在 Java 中不起作用,但我希望它表明了我的意图。是否可以在 Java 中做类似的事情?

例子:

public class Foo<T> {
    public Integer call(T input) {
        // ...
    }
}

public class Foo<T, S> {
    public S call(T input) {
        // ...
    }
}
4

3 回答 3

1

您不会覆盖类,而是覆盖方法。类可能是子类。

这个有可能:

public class Zoo<T, S, U> extends Foo<T>
{
    // ...
}
于 2012-11-29T19:18:46.823 回答
1

我想这就是你想要做的:

类 foo1.Foo:

package foo1;

public class Foo<T, S> {
    public S call(T input) {
        // ...
    }
}

类 foo2.Foo:

package foo2;

public class Foo<T> extends foo1.Foo<T, Integer> {
    public Integer call(T input) {
        // ...
    }
}
于 2012-11-29T19:20:56.170 回答
0

当您将类定义为

public class Foo<T> { // ... }

从技术上讲,我们告诉编译器用 Object 替换 Generic,因为 T 是无界的。

当我们将类定义为

public class Foo<T, S> {
// ...}

编译器不知道如何解决这个问题。

于 2012-11-29T19:30:21.563 回答