将所有类代码保存为单独的.java文件是否很重要?
Outer.java,
Inner.java,
Test.java
Run Code Online (Sandbox Code Playgroud)
或者我可以将一个java文件创建为Test.java.请解释匿名类,如何在java中创建匿名类,与普通类相比有哪些优势/劣势?
class Outer {
private int data = 50;
class Inner {
void msg() {
System.out.println("Data is: " + data);
}
}
}
class Test {
public static void main(String args[]) {
Outer obj = new Outer();
Outer.Inner in = obj.new Inner();
in.msg();
}
}
Run Code Online (Sandbox Code Playgroud)
Java 中的类anonymous class是没有名称的类,并且在一条语句中声明和实例化。每当您需要创建仅实例化一次的类时,您应该考虑使用匿名类。
尽管匿名类可能很复杂,但匿名类声明的语法使它们最适合仅具有几个简单方法的小型类。
\n\n匿名类必须始终实现接口或扩展抽象类。但是,您不\xe2\x80\x99 使用extends 或implements 关键字来创建匿名类。相反,您可以使用以下语法来声明和实例化匿名类:
\n\nnew interface-or-class-name() { class-body }\nRun Code Online (Sandbox Code Playgroud)\n\n在类主体中,您必须为接口或抽象类定义的每个抽象方法提供实现。这里\xe2\x80\x99是一个实现名为runnable的接口的示例,该接口定义了一个名为run的方法:
\n\nrunnable r = new runnable()\n {\n public void run()\n {\n //code for the run method goes here\n }\n };\nRun Code Online (Sandbox Code Playgroud)\n\n以下是有关匿名类的其他一些重要事实:
\n\n匿名类不能有构造函数。因此,在实例化匿名类时不能将参数传递给它。
匿名类可以访问声明该匿名类的块中可见的任何变量,包括局部变量。
匿名类还可以访问包含它的类的方法。