我的项目包含一些类:类型1,类型2和...是每个类都有自己的功能和字段,我将按以下方式使用它们:

  public interface iType {
    public void initialize();
  }

  public class Type1 implements iType {
    public static final String GROUP = "F1";
    public String[][] arrayName = new String[][]{
      {"a1", "d1"},
      {"b1", "f1"},
      {"c1", "g1"},
    };
    public HashMap<String, Unit> mapName = new HashMap<String, Unit>();

    @Override
    public void initialize() {
      //initialize Hashmap
    }
  }

  public class Type2 implements iType {
    public static final String GROUP = "F2";
    public String[][] arrayName = new String[][]{
      {"a2", "d2"},
      {"b2", "f2"},
      {"c2", "g2"},
    };
    public HashMap<String, Unit> mapName = new HashMap<String, Unit>();

    @Override
    public void initialize() {
      //initialize Hashmap
    }
  }

  //other classes : Type3 ,Type4 ,...

  private iType modify(String type) {
    switch (type) {
      case "Type1":
        return new Type1();
      case "Type2":
        return new Type2();
      /*
      case "Type3":
        .
        .
        .
      */
    }
    return null;
  }

  public void main() {
    iType x = modify(getType());
    ((Type1) x).
  }


在这种情况下不能用于强制转换:((Type?)x).arrayName

我不想进行强制转换,因为我不知道变量x中的哪个类,那么我该如何强制转换变量x呢? x的值取决于getType()

如何通过x访问字段类?

最佳答案

如何通过x访问字段类?


您可以向iType添加新方法,

 public String[][] getNames();


Type1Type2都将被强制实施。让此方法返回您的数组。这样您将避免演员

07-25 23:38
查看更多