java中,能不能在方法中定义一个类呢

J2EE 码拜 9年前 (2015-11-13) 1427次浏览
java中,能不能在方法中定义一个类呢?
假如能,请写个demo。
假如不能,请说明理由。
解决方案: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分可用分!
解决方案: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
}
}
这样可以不可以不就行了
解决方案:5分
本人没试过,不过理论上本人觉得,原因是类的功能之一是代替以前的结构,所以类可以视作是一种数据类型,那在方法里定义一个数据类型应该也是合理的。
解决方案:3分
解决方案:2分
5楼回答的很好。就是那么个道理

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明java中,能不能在方法中定义一个类呢
喜欢 (0)
[1034331897@qq.com]
分享 (0)