0

我有一个 Java 基类。在那个类中,我想创建一个私有类,并且我想在基类中访问该私有类的对象。我怎样才能做到这一点?

提前致谢!

4

4 回答 4

2

您可以通过创建内部类的对象并记住它的引用来访问它。就像任何其他类的实例一样。

public enum Outer {;
    private static class Nested {
        private Nested() { }
    }

    public static Object getNested() {
        return new Nested();
    }
}

public class Main {
    public static void main(String... args)  {
        System.out.println("I have an "+ Outer.newNested());
    }
}

印刷

I have an Outer$Nested@3f0ef90c

一个很好的例子来自 Arrays。这将创建一个私有嵌套类的实例,该实例实现了一个使其有用的公共接口。

public static <T> List<T> asList(T... a) {
return new ArrayList<T>(a);
}

/**
 * @serial include
 */
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
于 2012-08-31T08:41:46.820 回答
2

你是这个意思吗:

class Test {

    private Inner inner = new Inner();  

    private class Inner {
        public void foo() {}
    }

    // later somewhere
    public void bar() {
        inner.foo();
    }      
}
于 2012-08-31T08:42:08.653 回答
0
PrivateClass c = new PrivateClass();
c.getSomeObject(); //??

您可以在基类中使用上述代码;前提是私有类是基类的内部类。

于 2012-08-31T08:40:59.363 回答
0
class Test {

    private class Inner {
        public void foo() {
            System.out.println("vsahdashdashd");
        }
    }

    // later somewhere
    public void bar() {
        new Inner().foo();
    }      
}
class javaapplication9 extends Test
{
      public static void main(String[] args) {
        Test inner = new Test();  
        inner.bar();
      }
you can access private member from this type.
于 2012-08-31T08:57:23.827 回答