Java。方法内部对象作为 return 类型

Java. Method Inner Object as return type

我可以 return 从方法中处理局部内部对象吗?

public class myClass {
    public MyMethodInnerClass getMethodInnerClassObject() {
        class MyMethodInnerClass {
        }

        MyMethodInnerClass myMethClass = new MyMethodInnerClass();

        return myMethClass;
    }
}

抛出编译错误。 如果我不能 return 我的方法本地内部 class 对象,那么我如何在方法 return 之后保存它? 我如何才能引用此对象以供将来使用?


抛出异常:

线程异常"main"java.lang.Error:未解决的编译问题: MethodInnerClass 无法解析为类型

而且,我知道,方法中的局部变量存储在堆栈中,并在方法存在后立即删除。

您的 class 范围仅在方法内部。不过你可以这样做

public Object getMethodInnerClassObject() {

static class MyMethodInnerClass { }

public MyMethodInnerClass getMethodInnerClassObject() {
    return new MyMethodInnerClass();
}

我知道这是一个糟糕的设计。但是为了好玩,你可以在使用反射的方法之外使用这个对象。

public class Test{
    public static void main(String[] args) throws Exception {
        Outer o = new Outer();
        Outer.Inner in = o.new Inner();
        //method local object
        Object localObj = in.printInner();
        //abusing reflection
        localObj.getClass().getMethods()[0].invoke(localObj);
    }
}

class Outer {
    class Inner{
        
        Object printInner() {
            class LocalInner {
                public void printLocal() {
                    System.out.println("Inside local inner... :P");
                }
            }
            return new LocalInner();
        }
    }
}

这会打印:

Inside local inner... :P