我有以下方法。它给StackoverflowError。任何原因?

SomeClass.java

public static <T extends BaseClass> T newObject(Class<T> classOfT, Emp data) {

        return newObject(classOfT, data);
    }


newObject方法的实现

 private static <T extends BaseClass> T newObject(Class<T> classOfT, Object data) {

            //some logic and return subclass instance of BaseClass
        }


在这里newObject方法被递归调用。但是为什么不调用私有的newObject方法呢?

谢谢!

最佳答案

更改为

public static <T extends BaseClass> T newObject(Class<T> classOfT, Emp data) {

        return newObject(classOfT, (Object)data);
    }


Uppercast第二个参数为Object类型。这将对适合方法签名的私有方法进行适当的调用

09-25 17:08