如何使用反射调用方法

时间:2017-09-09 20:53:43

标签: java reflection nested private invoke

Collections类具有嵌套类private static class EmptyList<E>,该类具有get(int index)方法,并且没有默认构造函数。如何调用get(int index)方法?

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码创建java.util.Collections$EmptyList的实例并调用其get(int)。代码经过全面测试,并根据要求抛出IndexOutOfBoundsException

import java.lang.reflect.Constructor;
import java.util.List;

public class Test {

    public static void main(String[] args) throws ReflectiveOperationException {
        Class<?> clazz = Class.forName("java.util.Collections$EmptyList");
        Constructor<?> constructor = clazz.getDeclaredConstructor();
        constructor.setAccessible(true);
        List<?> emptyList = (List<?>) constructor.newInstance();

        emptyList.get(0);
    }
}

仅仅因为我很好奇,您是否可以提供更多有关您为什么要这样做的信息?