我的项目由一些类组成:类型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?
访问字段类答案 0 :(得分:1)
如何通过x?
访问字段类
您可以向iType
添加新方法,
public String[][] getNames();
Type1
和Type2
都将被强制实施。让这个方法返回你的数组。这样你就可以避免演员了