如果您不使用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/