java - 创建类的不同方法?

标签 java class object netbeans

我一直在练习在 netbeans 中制作 GUI,并遇到了这个自动生成的代码

  saveButton.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                saveButtonMousePressed(evt);
            }

我只是对“new java.awt.event.MouseAdapter()”这个论点感到困惑。我知道当我们使用“new”关键字时,我们创建了该类的对象。但在“new”语句之后,它声明了一个方法,所以我的看法是“一个带有方法的对象?我知道我们创建对象,以便我们可以使用方法而不是在其中创建方法”。

在研究和阅读内部类之后,我现在有了不同的观点。

是否可以使用“new”语句在参数中创建一个类?如果为 true,那么该代码没有创建对象,而是创建了一个类。

如果我的结论是正确的,那么有两种方法(到目前为止我知道)可以在 java 中创建类。

  1. 通过使用,

    public clas Sample() {
    
    //insert methods here
    
    }
    
  2. 并且通过使用,

    public void getSomething(new Sample() { //insert method here })
    

我听对了吗?我只是java初学者(自学)。

最佳答案

这并不是创建的不同方式,实际上,您可以按照与任何其他类相同的方式定义它,但您没有命名它,它只是一个专门的鼠标适配器

实际发生的情况是,您定义了 mousePressed 的专门版本,而不需要将其关联到 MouseAdapter 的命名子类。这就像在同一点上定义和使用类一样。您定义具有特定行为的特定类并实例化它。

确实,这就是 anonymous class 。这与 inner class 没有任何共同点,这是一个在另一个类中定义的类(因此它们是嵌套的)。

关于java - 创建类的不同方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27976890/

相关文章:

java - 为什么在 foreach 循环中分配给迭代变量不会更改基础数据?

java - java中一个if语句中的多个逻辑表达式

c++ - 类 undefined reference

java - clojure - java 互操作(未找到匹配的 ctor)

javascript - 如何从 JS 字符串创建对象属性

jquery - 将新的键值对推送到 json

javascript - Extjs 3.x : Can I make a panel or a container movable?

java - Spring portlet mvc : @Valid does not seem to work

java - Gmail 中带有附件 : html is attached as noname. html 的 Apache commons-mail HtmlEmail

java - Setter 方法有异常