【问题标题】:How can I call method 'func' from and what is the meaning of implementing this object?我如何调用方法'func',实现这个对象的意义是什么?
【发布时间】:2019-05-03 06:05:59
【问题描述】:

所以我只是在玩 java 8 并想在创建对象后放置 { } 并且奇怪的是它没有出错。

public class Guava{

    public static void main(String [] args) {
        Guava g = new Guava(){
            int x=1;
            public void func(){
                System.out.println("LOL");
            }
        };
    }
}

原以为代码会出错

Guava g = new Guava(){ ... };

所以我想知道是否有一种方法可以实际使用变量“x”和方法“func”,以及这是否是我不知道的 java 下的实际概念? (可能会关闭?)

谢谢

【问题讨论】:

  • g.func(); 将调用func()。您正在创建Guava 的匿名子类。 x 在该子类之外不可见。
  • 正如@ElliottFrisch 所说,这是一个匿名子类,这是创建小类而不为它们打开新文件的好方法。你也可以用同样的方式实现匿名函数,找“Lambda Expressions”。
  • @ElliottFrisch g.func();在 main() 中导致错误“无法解析方法 func()”。
  • @EladAharon 是的,我了解 Lambda 表达式和函数式编程,但“匿名子类对我来说是一个新概念”:-)
  • func() 添加到GuavaGuava 是什么?

标签: java object anonymous


【解决方案1】:

Guava g = new Guava(){ ... }; 创建一个anonymous inner-class

它是一个没有名字的内部类,只为它创建一个对象。

在您的示例中,内部类继承自 Guava

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多