当前位置: 首页 > 知识库问答 >
问题:

Java匿名类的类名[重复]

邓夕
2023-03-14
Class A{

 public void test(){
   B b = new B();
   System.out.println( "Class Name: " + b.createClassC().getClass() );
 }

}

Class B{
   public C createClassC(){
     C c = new C(){
       @Override
       public boolean equals( Object other ){
         return true;
       }    
     }; 
   }
}

Class C{
   int val = 8;
}

输出:类名:包。名称在这里B

有人能告诉我为什么匿名类类型在getClass()方法中给出封闭类吗?这导致了问题的出现。对象C上的equals()始终失败。我的理解是,由于getClass提供了封闭类名,所以永远不会调用重写的equals?

共有2个答案

乐宜民
2023-03-14

不知道如何运行代码。需要注意的几点如下-

  • 首先,如果所有的main()方法都在哪里?你的计划是如何开始的?一定有

publicstaticvoidmain(字符串args[])

方法。

>

public C createClassC(){C C=new C(){@Override public boolean equals(Object other){return true;}
};}

函数签名指示它应该返回一个C类(或它的子类)的对象,但我没有看到这样的返回语句。你必须返回c;

最后,代码的输出是类名:Class nz。测验anon.B$1,其中B$1表示匿名类。

马峻
2023-03-14

输出为类名:Class nz。测验一美元一元美元符号很重要。B$1表示B下的第一个匿名类。B$2表示第二个匿名类,依此类推。

还调用了equals方法

System.out.println( "This is true: " + b.createClassC().equals(b) );
System.out.println( "and so is this: " + b.createClassC().equals(this) );
 类似资料:
  • 匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。其语法形式如下: 这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类可使代码更加简洁、紧凑,模块化程度更高。 匿名类有两种实现方式: 继承一个类,重写其方法。 实现一个接口(可以是多个),实现其方法。 下面通过代码来说明。 程序的输出结果如下: 从输出结果可以看出,匿名内部类有

  • 本文向大家介绍Java匿名类,匿名内部类实例分析,包括了Java匿名类,匿名内部类实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java匿名类,匿名内部类。分享给大家供大家参考,具体如下: 内部类 匿名类  首发日期 :2018-03-25 内部类: 在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外部类】 如果想要通过一个类来使用另一个类,可以定

  • 可能重复: 什么是双大括号初始化在Java? 在查看一些遗留代码时,我遇到了一些非常令人困惑的问题: 在调试模式下运行代码后,我发现匿名块是在调用构造函数之后调用的。上面的功能和做的有什么不同: ?我会认为它们在功能上是等价的,并且会认为后一种方式是更好/更干净的编写代码的方式。

  • 我试图用java创建一个anon类 它似乎根本不起作用,它给了我一个错误,说run()方法未定义。尽管我创建了一个包含run()方法的anon类,但我是一个完全的java初学者,我大部分时间用javascript编写代码,javascript是我最熟悉的语言,我正在努力适应java的概念,所以对这里的很多人来说,这个问题可能看起来很愚蠢,我为此道歉。提前谢谢

  • 问题内容: 我最近正在做一个编程任务,要求我们用代码实现由UML图指定的程序。在某一时刻,该图指定我必须创建一个匿名JButton,该JButton显示一个计数(从1开始)并在每次单击时递减。JButton及其ActionListener都必须是匿名的。 我想出了以下解决方案: 这将添加一个匿名JButton,然后添加另一个(内部)匿名ActionListener来处理事件并根据需要更新按钮的文本

  • 问题内容: 我有一个用于过滤项目的界面: 和一个包含type成员的类。 当我尝试使用实现的匿名类来初始化时: 我有一个例外:。 如何使我编写的匿名类可序列化? 问题答案: 约书亚·布洛赫(Joshua Bloch)在他的《有效的Java,第二版》第74项中写道: 内部类 不应实现。它们使用编译器生成的 合成 字段来存储对 封闭实例的 引用,并存储来自封闭范围的局部变量的值。这些字段如何与类定义相对