当前位置: 代码迷 >> J2EE >> java中,能不能在步骤中定义一个类呢
  详细解决方案

java中,能不能在步骤中定义一个类呢

热度:87   发布时间:2016-04-17 22:57:29.0
java中,能不能在方法中定义一个类呢
java中,能不能在方法中定义一个类呢?

如果能,请写个demo。

如果不能,请说明理由。
------解决思路----------------------
如果匿名内部类或这局部内部类要访问 方法的局部变量,这个变量要声明为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");
}
}

------解决思路----------------------
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");
}
}

------解决思路----------------------

楼上已经给出了答案。

每天回帖即可获得100分可用分!
------解决思路----------------------


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

------解决思路----------------------
人家不是问方法中能不能定义一个类吗?
直接回答
method(){
Class xxx{
//xxx
}
}
这样可以不可以不就行了
------解决思路----------------------
我没试过,不过理论上我觉得,因为类的功能之一是代替以前的结构,所以类可以视作是一种数据类型,那在方法里定义一个数据类型应该也是合理的。

------解决思路----------------------
方法内部类详解
------解决思路----------------------
5楼回答的很好。。。就是那么个道理