如何在Java中调用带有参数化参数的私有静态方法?[关闭]

ny6fqffe  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(114)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
我有一个签名为private static <T> String getId(T element)的方法,我需要测试它。
我试过做一个像Method method = MyClass.class.getDeclaredMethod("getId", (Class<?>) any(Object.class));这样的东西,但它不起作用。我得到了一个java.lang.NoSuchMethodException with MyClass.getId(null)
如果我理解得很好,这意味着反射的声明参数没有很好地定义。
有办法吗?
通过提前,不,我不能改变测试方法的签名。

jgovgodb

jgovgodb1#

试试这个:

class Test {
    public static void main(String[] args) throws Exception {
        Method method = MyClass.class.getDeclaredMethod("getId", Object.class);
        method.setAccessible(true);
        System.out.println(method.invoke(null, 123L));
        //System.out.println(MyClass.getId("")); // 'getId(java.lang.String)' has private access in 'MyClass'
    }
}

class MyClass {
    private static <T> String getId(T element) {
        return String.valueOf(element);
    }
}

输出:

123

相关问题