【问题标题】:Method that returns new object of anonymous class返回匿名类的新对象的方法
【发布时间】:2017-03-30 10:00:11
【问题描述】:

假设我有这样的接口 I1:

interface I1 {
   public void setNumber(int num);
}

我想创建一个名为 MyClass 的公共类,该类将包含方法 getI1,该方法将返回实现接口 I1 的匿名类的新对象。

【问题讨论】:

    标签: java anonymous-class


    【解决方案1】:

    这个怎么样?

    public I1 getI1() {
      return new I1() {
        public void setNumber(int num) {
          //do something
        }
      };
    }
    

    您也可以使用任何实现 I1 的类来代替 new I1()

    这是一个使用接口 Runnable 和实现 Runnable 的类 Thread 的示例

    public static void main(String[] args) {
      System.out.println("main > start");
    
      System.out.println("main > r = getRunnable()");
      Runnable r = getRunnable();
    
      System.out.println("main > r.run()");
      r.run();
      System.out.println("main > Stop");
    }
    
    public static Runnable getRunnable() {
      return new Thread() {
        public void run() {
          System.out.println("run > Start");
          //do something
          System.out.println("run > Stop");
        }
      };
    }
    

    输出是

    main > start
    main > r = getRunnable()
    main > r.run()
    run > Start
    run > Stop
    main > Stop
    

    【讨论】:

      【解决方案2】:

      对 Japu_D_Cret 回答的一点补充:对于 JDK 8,它可以短至:

      public I1 getI1() {
          return num -> {
              // your implementation goes here
          };
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-05
        • 1970-01-01
        • 2012-06-04
        • 1970-01-01
        • 1970-01-01
        • 2012-02-06
        • 2023-04-09
        • 2010-09-08
        相关资源
        最近更新 更多