是否可以通过使用不同的类型列表来“重载”泛型类?

时间:2012-11-29 19:16:13

标签: java generics overloading

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

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) {
        // ...
    }
}

3 个答案:

答案 0 :(得分:1)

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

这是可能的:

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

答案 1 :(得分: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) {
        // ...
    }
}

答案 2 :(得分:0)

当您将课程定义为

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

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

当我们将类定义为

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

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