我的项目包含一些类:类型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();
Type1
和Type2
都将被强制实施。让此方法返回您的数组。这样您将避免演员