public class TT2 { public static void main(String[] args) { AA aa = new AA() { }; AA.BB ab= aa.new BB(){}; } } interface AA{ interface BB{} }请告诉我这段代码为什么报错
时间: 2024-03-23 12:41:11 浏览: 16
这段代码报错是因为在使用 `aa.new BB(){}` 创建一个 `AA` 接口中的嵌套 `BB` 接口的匿名实现类时,需要提供 `BB` 接口中的所有方法的具体实现,否则会导致编译错误。
在这段代码中,`BB` 接口没有任何方法,所以我们不需要在匿名实现类中提供任何方法的具体实现。因此,我们可以直接创建一个空的匿名实现类,如下所示:
```
public class TT2 {
public static void main(String[] args) {
AA aa = new AA() {
};
AA.BB ab = aa.new BB() {
};
}
}
interface AA {
interface BB {
}
}
```
这样就不会报错了。
相关问题
package practise14; public class TT2 { public static void main(String[] args) { AA aa = new AA() { }; AA.BB ab= aa.new BB(){}; } } interface AA{ interface BB{} }为什么这段代码报错Anonymous class implements interface; cannot have qualifier for new
这段代码报错是因为在使用 `aa.new BB(){}` 创建一个 `AA` 接口中的嵌套 `BB` 接口的匿名实现类时,不能使用限定符号(qualifier),即不能使用 `aa.` 来限定 `BB` 接口的创建,否则会导致编译错误。
正确的写法是直接使用 `new` 关键字来创建匿名实现类,如下所示:
```
public class TT2 {
public static void main(String[] args) {
AA aa = new AA() {
};
AA.BB ab = new AA.BB() {
};
}
}
interface AA {
interface BB {
}
}
```
这样就不会报错了。
37.public static void main(String] args){
这是Java语言中的一个主函数的定义,是Java程序的入口点。其中,public表示该函数可以被其他类访问;static表示该函数为静态函数,可以直接通过类名调用;void表示该函数没有返回值;main是函数名;String[] args是该函数的参数,args是一个字符串数组,用于接收命令行参数。在该函数中可以编写Java程序的执行逻辑。