gpt4 book ai didi

java - 如何从泛型方法调用非泛型方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:22:51 25 4
gpt4 key购买 nike

如何从泛型方法调用非泛型方法:

    class Test {
...
public <T> int someFunction1(T someParam) {
return someFunction2(someParam);
}

public int someFunction2(String someParam) {
return 1;
}

public int someFunction2(Integer someParam) {
return 1;
}
}

Test t = new Test;
t.someFunction1(new String("1"));
t.someFunction1(new Integer(5));

是否可以在编译时而不是运行时执行此操作?

最佳答案

编译器无法确定 someFunction1 中的 someParamString 还是 Integer。这样的事情会起作用:

public <T extends String> int someFunction1(T someParam) {
return someFunction2(someParam);
}

public int someFunction2(String someParam) {
return 1;
}

如果您希望它是 String/Integer,您需要创建一些数据类型或创建 someFunction1 的重载定义,其中 T 绑定(bind)到 Integer

或者只是一些“丑陋”的转换:

public <T> int someFunction1(T someParam) {
if (someParam instanceof Integer)
return someFunction2((Integer) someParam);
else if (someParam instanceof String)
return someFunction2((String) someParam);
else throw new IllegalArgumentException("Expected String or Integer")
}

关于java - 如何从泛型方法调用非泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38262104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com