我有一个关于
Java中的本地类的问题(在方法中声明的类或以{}为边界的块).
有没有理由不宣布本地课程为最终?我们不能从本地类继承其他类(如果它没有在同一范围内定义),但是当我们将它声明为final时,编译器可以使代码更简单吗?
谢谢!
解决方法
人们似乎对匿名类和本地类有点困惑.这是一个本地课程:
public void m() { class MyClass{} MyClass cl = new MyClass(); }
你可以声明MyClass final,但它实际上可以从它继承,因此Java中的任何其他地方都可以声明它是最终的以避免这种情况:
public void m() { class MyClass{} MyClass cl = new MyClass(); class MyOtherClass extends MyClass{} MyOtherClass cl2 = new MyOtherClass(); }
据我所知,匿名课程不被视为最终课程.但是,从语法上讲,没有办法从它们继承,所以它需要一个强大的类文件hack才能这样做.