Java 方法正在递归调用,尽管参数不同?
我有以下方法。它给出堆栈溢出错误。有什么原因吗 SomeClass.javaJava 方法正在递归调用,尽管参数不同?,java,reflection,Java,Reflection,我有以下方法。它给出堆栈溢出错误。有什么原因吗 SomeClass.java publicstatict新对象(类classOfT,Emp数据){ 返回newObject(classOfT,data); } newObject方法实现 private static <T extends BaseClass> T newObject(Class<T> classOfT, Object data) { //some logic and retur
publicstatict新对象(类classOfT,Emp数据){
返回newObject(classOfT,data);
}
newObject方法实现
private static <T extends BaseClass> T newObject(Class<T> classOfT, Object data) {
//some logic and return subclass instance of BaseClass
}
private static T newObject(类classOfT,对象数据){
//基类的一些逻辑和返回子类实例
}
这里递归调用newObject方法。但是为什么不调用私有的newObject方法呢
谢谢 这就是所谓的。编译器开始从类层次结构的底部搜索适当的方法Emp
是Object的子对象,这就是为什么public方法是最具体的方法,因为签名只在第二个参数上不同。将其更改为
public static <T extends BaseClass> T newObject(Class<T> classOfT, Emp data) {
return newObject(classOfT, (Object)data);
}
publicstatict新对象(类classOfT,Emp数据){
返回newObject(classOfT,(Object)数据);
}
Uppercast
您的对象
类型的第二个参数。这将对适合方法签名的私有方法进行适当的调用是否有停止条件?如果不是的话,它将无限循环(直到它崩溃)。米哈伊尔,你能给我建议其他选择吗?谢谢为什么不重命名第二个私有方法呢。我认为应尽可能避免超载。唯一有用的是构造函数。
public static <T extends BaseClass> T newObject(Class<T> classOfT, Emp data) {
return newObject(classOfT, (Object)data);
}