Java 方法正在递归调用,尽管参数不同?

Java 方法正在递归调用,尽管参数不同?,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

我有以下方法。它给出堆栈溢出错误。有什么原因吗

SomeClass.java
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);
    }