gpt4 book ai didi

java - 从匿名内部类的构造函数中抛出异常

转载 作者:行者123 更新时间:2023-11-30 06:16:26 31 4
gpt4 key购买 nike

如何向匿名内部类的构造函数添加“throws”?

class Foo {
public Foo() throws Exception {
}
}

因为这行不通

 public static void main(String[] args) {
Foo x = new Foo() {
@Override
public Foo() throws Exception {
}
}
}

我正在尝试弄清楚将“throws”放在哪里以抑制编译器警告。有没有一种方法可以在不使用 try/catch block 或创建单独的类的情况下执行此操作?

最佳答案

我不确定您要完成什么。请注意,匿名类永远不会有显式声明的构造函数。这是完全可以理解的,因为如果它有一个,它就需要有一个名字,因此不再是匿名的。

如果你想要一个构造函数可能抛出异常的类的匿名子类,这不是问题。

class Foo {
Foo() throws Exception {
}
}

void demo() throws Exception {
Foo foo = new Foo() { // might throw
};
}

同样,如果你想用可能抛出的东西初始化匿名类,你也可以这样做。请记住,匿名类的定义是表达式,因此只要它们被 try-catch block 包围或包含方法声明要抛出的异常,它们就可以抛出。

class Foo {
}

class Bar {
Bar() throws Exception {
}
}

void demo() throws Exception {
Foo foo = new Foo() {
Bar bar = new Bar(); // might throw
};
}

关于java - 从匿名内部类的构造函数中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27338753/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com