weixin_45492256 2022-01-03 22:38 采纳率: 100%
浏览 37
已结题

如何实例化这个匿名内部类

package com.lzw;

public class AnonymityInnerClass {
}
class OuterClass4{

public OutInterface doit(final String s){
    return new OutInterface(){
        private int i=0;
        public int getValue(){
            System.out.println(s);
            return i;
            
        }
        public void f(){
            System.out.println("f()");
        }
    };
}

}
interface OutInterface { // 定义一个接口
}

  • 写回答

2条回答 默认 最新

  • 日落西风又在吹 2022-01-04 10:03
    关注
    1. 以上代码直接调用方法会导致找不到方法,因为父类没有子类(匿名内部类)方法,所以无法直接声明式调用
    2. 以下代码使用反射形式进行方法调用
      ```java

    import java.lang.reflect.Method;
    public class AnonymityInnerClass {
    }
    class OuterClass4 {
    /**
    * 测试调用内部类方法
    * @param args
    * @throws Exception
    */
    public static void main(String[] args) throws Exception {
    OutInterface doit = new OuterClass4().doit("123123");
    // 反射获取getValue方法
    Method getValueMethod = doit.getClass().getMethod("getValue");
    // 执行getValue具体方法
    getValueMethod.invoke(doit);
    // 反射获取f方法
    Method fMethod = doit.getClass().getMethod("f");
    // 执行f具体方法
    fMethod.invoke(doit);
    }

    public OutInterface doit(final String s) {
        return new OutInterface() {
            private int i = 0;
            public int getValue() {
                System.out.println(s);
                return i;
            }
            public void f() {
                System.out.println("f()");
            }
        };
    }
    

    }
    interface OutInterface {
    }
    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月12日
  • 已采纳回答 1月4日
  • 创建了问题 1月3日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境