【问题标题】:List of protected nested class受保护的嵌套类列表
【发布时间】:2022-11-16 02:04:13
【问题描述】:

我有一个 Java 类,其中有一个嵌套的受保护类。在另一个类(和另一个包)的方法中,我必须列出这种嵌套的受保护类型。

有没有办法在 Java 中做到这一点?

// SomeClass.java
package stuff;

public class SomeClass {
  protected class Nested {
    int x;
    public Nested setX(int arg) {
      x = x;
      return this;
    }
    public int getX() {
      return x;
    }
  }

  public Nested make(int x) {
    return new Nested().setX(x);
  }
}
// MyClass.java
package project;

import java.util.List;
import java.util.ArrayList;
import stuff.SomeClass;

public class MyClass {
  public SomeClass instance;

  // I don't know what I should insert ...
  public List< /* ... here... */ ?> method() {
    var list = new ArrayList< /* ... and here... */ >();
    list.add(instance.make(1));
    list.add(instance.make(2));
    return list; // ... to return an ArrayList<SomeClass.Nested>
  }
}

即使是一些反射魔法对我来说也可以

【问题讨论】:

    标签: java


    【解决方案1】:

    你不能,因为 NestedSomeClass 之外是不可访问的。您可以将 Nested 公开(如果 SomeClassMyClass 在同一个包中,则将其设为包私有),或者将 MyClass 移到 SomeClass 中。

    【讨论】:

      【解决方案2】:

      一种解决方案是创建一个由Nested 实现的公共接口。然后你可以参考那个接口类型List&lt;MyInterface&gt;,例如。而make()返回接口类型,而不是Nested。这是标准 Java API 中许多类使用的模式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-31
        • 2012-08-19
        • 1970-01-01
        • 2013-01-23
        • 2015-07-16
        • 2016-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多