Java 我们可以在一个方法中有一个内部类吗?
可能重复:Java 我们可以在一个方法中有一个内部类吗?,java,inner-classes,Java,Inner Classes,可能重复: 我们可以在一个方法中有内部类吗 任何代码示例都会有帮助。是的,您可以: public static void main(String[] args) { class Foo implements Runnable { @Override public void run() { System.out.println("Hello"); } } Foo foo = new Foo(); } 不过,我建议
我们可以在一个方法中有内部类吗 任何代码示例都会有帮助。是的,您可以:
public static void main(String[] args) {
class Foo implements Runnable {
@Override public void run() {
System.out.println("Hello");
}
}
Foo foo = new Foo();
}
不过,我建议不要这样做,最好是使用足够好的匿名内部类,或者在其他情况下使用不在方法内部的嵌套类。如果您需要在一个方法中使用一个命名类,这就意味着您需要获取它声明的额外成员,这将变得很混乱。将其拆分为自己的嵌套类(理想情况下,使其成为静态的,以删除一堆角壳)通常会使代码更清晰。是的,它被称为本地内部类-您可以在web搜索中使用此术语找到示例。是的,您可以
public final class Test {
// In this method.
private void test() {
// With this local variable.
final List<String> localList = new LinkedList<String>();
// We can define a class
class InnerTest {
// Yes you can!!
void method () {
// You can even access local variables but only if they are final.
for ( String s : localList ) {
// Like this.
}
}
}
}
}
公开期末考试{
//用这种方法。
专用无效测试(){
//使用这个局部变量。
最终列表localList=newlinkedlist();
//我们可以定义一个类
类内部测试{
//是的,你可以!!
无效方法(){
//您甚至可以访问局部变量,但前提是它们是最终变量。
for(字符串s:localList){
//像这样。
}
}
}
}
}
是的,它被称为本地类:你可以自己尝试一下,你知道。。。还有:局部内部类有一个很好的用途,即需要匿名类之类的东西,但需要类具有构造函数。@MathiasSchwarz:大多数情况下都可以使用初始值设定项块-在需要命名的构造函数中做什么?是的,这是另一种方法。然而,这些初始值设定项块的“参数”需要在外部范围(方法)中声明为final。