如果您不使用Java泛型,那么我相信在同一类中不可能只有两个方法的返回类型有所不同。

换句话说,这将是非法:

public HappyEmotion foo(T emotion) {
    // do something
}

public SadEmotion foo(T emotion) {
    // do something else
}

当重载返回可能实现不同接口(interface)的泛型的方法时,例如在相同的类定义中存在以下两个方法时,也是如此:
public <T extends Happy> T foo(T emotion) {
    // do something
}

public <T extends Sad> T foo(T emotion) {
    // do something else
}

这是非法的吗?

最佳答案

这是合法的,因为输入参数也因类型而异。

因此,以下是合法的,

public <T extends Happy> T foo(T emotion) {
    // do something
}

public <T extends Sad> T foo(T emotion) {
    // do something else
}

但是以下不是
public <T extends Happy> String foo(T emotion) {
    // do something
}

public <T extends Happy> T foo(T emotion) {
    // do something else
}

谢谢...

关于java - 您可以使用泛型执行方法重载,而仅更改方法签名的泛型类型吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7225797/

10-09 19:39