java - 匿名类的对象类型是什么

标签 java anonymous-class

请看下面的 Java 类:

 class A {
   public void doProcess(){
      System.out.println("Process from A class!");
   }
 }

 class B extends A {
   @Override
   public void doProcess(){
      System.out.println("Process from B class!");
   }
 }

我有 2 个类,如上所示。如果我要执行以下操作(匿名类)

 new B() {
   @Override
   public void doProcess(){
      System.out.println("Process from Anonymous class");
   }        
 }

我是在创建 B 的新子类吗?或者它是 B 的一个实例?

我知道我可以将匿名实现分配给 B 或 A。我不确定的是所创建的匿名类的实例。与任何实际目的相比,更多关于 Java 功能的好奇心。我不知道如何让这个匿名内部类的类对象使用一些反射 API 并自己弄清楚。

最佳答案

您正在创建类 B 的匿名子类的实例。

B b = new B() {
   @Override
   public void doProcess(){
      System.out.println("Process from Anonymous class");
   }        
}
System.out.println (b.getClass ().getSuperclass ());

这将打印

class some.package.B

其中some.package是类B所在的包。

关于java - 匿名类的对象类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48378724/

相关文章:

java - JAXB DOM 节点解码省略元素

java - 常见函数类型的方法命名约定

java - Tomcat - 未找到 Spring DataSource JNDI 但它存在

Java:匿名类作为现有接口(interface)的子类?

java - 从内部匿名 Runnable 访问外部变量

java - 扩展接口(interface)与通过匿名类实例化

java - protobuf 中 ByteSize() 的等价物

java - 来自单线程执行器的 RejectedExecutionException

java - 从匿名类到 lambda 表达式

C# 等效于具有 init block 的 Java 匿名内部类