java - 创建对象时声明方法
问题描述
为什么第一种方法是正确的,而第二种方法不是?
第一种方式:
new Object() {
public void a() {
/*code*/
}
}.a();
第二种方式:
Object object = new Object() {
public void a() {
/*code*/
}
};
object.a();
我在哪里可以找到有关它的更多信息?
解决方案
java.lang.Object
没有声明方法 (2),而类实例创建表达式a
返回的匿名类有 (1)。 new Object() { public void a() {} }
使用 Java 10 的局部变量类型推断( var
) 使第二个选项与第一个选项一样有效。
var object = new Object() {
public void a() {}
};
object.a();
推荐阅读
- nginx - 对于请求标头或 Cookie 太大,如何让 nginx 返回 431 而不是 400?
- python - Python SQLModel - 截断表或全部删除并获取行数
- python - Excel 超链接不起作用“无法打开指定的文件”
- excel - VBA UDF 在每次更改后进行评估
- json - 支持空间参考的 GeoJSON 替代方案
- flutter - 按多个字段分组并使用 Dart 和 Flutter 获取最大值
- windows - Windows Media Player 中的内存泄漏
- reactjs - VSCode Snippet 用 setKey(value) 替换 this.setState({key: value})
- vb.net - 从一个类中找出另一个类中是否存在事件处理程序
- mobile - Blogger - 自定义移动菜单有 2 个“主页”按钮