【发布时间】: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()添加到Guava。Guava是什么?