有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    您应该创建扩展抽象类的concrete class实例,或者应该为抽象类创建anonymous inner class instance(并重写标记为abstract的方法)。然后,您可以使用该实例并通过使setAccessible(true)可访问该方法。除非你把SecurityManager搞砸了(在大多数情况下你不会)。然后可以调用该方法

  2. # 2 楼答案

    是的,你可以

    但是您需要一个对象,它是这个抽象类的实例

  3. # 3 楼答案

    是的,你可以 您可以使用反射。 你需要什么-

    1. The class object of Abstract Class.
    2. dynamically set the method's accessibility to true. Check the code below.
    class ExitPuzzle extends MyAbstractClass {
        public static void main(String... args) throws IllegalArgumentException,
                IllegalAccessException, InvocationTargetException {
            Class clazz = MyAbstractClass.class;
            Method[] methods = clazz.getDeclaredMethods();
            System.out.println(Arrays.toString(methods));
            methods[0].setAccessible(true);
            methods[0].invoke(new ExitPuzzle(), null);
        }
    
    }
    
    abstract class MyAbstractClass {
        private void myMethod() {
            System.out.println("in MyAbstractClass");
        }
    }
    

    O/p:

    [private void MyAbstractClass.myMethod()]
    in MyAbstractClass