java - 为什么参数定义方法匿名内部类的方法内部行有效?

标签 java inner-classes anonymous-class anonymous-methods anonymous-inner-class

InterfaceInAbstractClass.java

public abstract class InterfaceInAbstractClass {

    public interface Inter{

        void interface_method();

    }

    public  void interface_abstract_class_method(Inter in){

    }

}

InterfaceInAbstractClassImplementer.java

public class InterfaceInAbstractClassImplementer extends InterfaceInAbstractClass{

    public static void main(String[] args){

//      InterfaceInAbstractClass.Inter abcd = new InterfaceInAbstractClass.Inter() {
//          
//          @Override
//          public void interface_method() {
//              // TODO Auto-generated method stub
//              System.out.println("An interface can be implemented ");
//          }
//      };
        System.out.println("An interface can be implemented ");
        InterfaceInAbstractClassImplementer abc = new InterfaceInAbstractClassImplementer();
        abc.interface_abstract_class_method(new Inter() {

            @Override
            public void interface_method() {
                // TODO Auto-generated method stub
                System.out.println("An interface can be implemented within a class");
            }
        });     
    }
}

为什么 System.out.println("接口(interface)可以在类中实现");没有打印出来?

最佳答案

对实现类进行一些小调整以调用接口(interface)函数

public class InterfaceInAbstractClassImplementer extends InterfaceInAbstractClass{

    public static void main(String[] args){

        System.out.println("An interface can be implemented ");
        InterfaceInAbstractClassImplementer abc = new InterfaceInAbstractClassImplementer();
        Inter inter = new Inter() {

            @Override
            public void interface_method() {
                // TODO Auto-generated method stub
                System.out.println("An interface can be implemented within a class");
            }
        };
        abc.interface_abstract_class_method(inter);
    }

    public void interface_abstract_class_method(Inter inter) {
        inter.interface_method();
    }
}

输出:

An interface can be implemented
An interface can be implemented within a class

关于java - 为什么参数定义方法匿名内部类的方法内部行有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37338397/

相关文章:

java - 无法在 IDEA IntelliJ 12 中调试 Java 项目

java - 随机数生成器问题

java - 如何在 Java 内部类中定义绑定(bind)类型参数

java - 另一个类的内部类的实例化

java - 如何在没有反射的情况下访问匿名对象中声明的字段?

java - 如何使用接口(interface)引用保护匿名类的创建

java - Java 中 WinAPI 的 MessageBox

java - 为什么要创建一个testClass对象

Java - 从匿名内部类访问变量

groovy - 在枚举内的匿名类中声明实例变量