解决方案:5分
假如匿名内部类或这局部内部类要访问 方法的局部变量,这个变量要声明为final
public class A { public static void main(String[] args) { A a = new A(); a.methodA1(); a.methodA2(); } public void methodA1(){ B b = new B(){ @Override public void methodB() { System.out.println("method in anonymous inner class"); } }; b.methodB(); } public void methodA2(){ class C extends B{ @Override public void methodB() { System.out.println("method in C"); } } C c = new C(); c.methodB(); } } class B{ public void methodB(){ System.out.println("method in B"); } }
解决方案:5分
public class A { public static void main(String[] args) { A a = new A(); a.methodA1(); a.methodA2(true); } public void methodA1(){ final boolean bb = true; B b = new B(){ @Override public void methodB() { System.out.println("method in anonymous inner class"); if(bb){ System.out.println("bb is true"); } } }; b.methodB(); } public void methodA2(final boolean b){ class C extends B{ @Override public void methodB() { System.out.println("method in C"); if(b){ System.out.println("b is true"); } } } C c = new C(); c.methodB(); } } class B{ public void methodB(){ System.out.println("method in B"); } }
解决方案:5分
楼上已经给出了答案。
每天回帖即可获得100分可用分!
每天回帖即可获得100分可用分!
解决方案:5分
public class T{ public static void main(String[] args){ T t = new T(); t.say(); T.A a = t.new A(); a.say(); B b = new B(); b.say(); } public void say(){ System.out.println("this is T class"); A aa = new A(); aa.say(); B bb = new B(); bb.say(); } class A{ public void say(){ System.out.println("this is A class"); } } } class B{ public void say(){ System.out.println("this is B class"); } }
输出结果:
this is T class
this is A class
this is B class
this is A class
this is B class
解决方案:10分
人家不是问方法中能不能定义一个类吗?
直接回答
method(){
Class xxx{
//xxx
}
}
这样可以不可以不就行了
直接回答
method(){
Class xxx{
//xxx
}
}
这样可以不可以不就行了
解决方案:5分
本人没试过,不过理论上本人觉得,原因是类的功能之一是代替以前的结构,所以类可以视作是一种数据类型,那在方法里定义一个数据类型应该也是合理的。
解决方案:3分
解决方案:2分
5楼回答的很好。就是那么个道理