Java 如何使用ArrayList实现动态绑定<;T>;在爪哇?
Java 如何使用ArrayList实现动态绑定<;T>;在爪哇?,java,arrays,arraylist,dynamic-binding,Java,Arrays,Arraylist,Dynamic Binding,Java中的ArrayList似乎不支持动态绑定。当我尝试执行以下代码时,它给出了编译时错误。 代码: class Value { <some variables> <some methods> } class IntegerValue extends Value { int value; } class CharacterValue extends Value { char value; } class Main{ ArrayList<
Java中的ArrayList似乎不支持动态绑定。当我尝试执行以下代码时,它给出了编译时错误。
代码:
class Value
{
<some variables>
<some methods>
}
class IntegerValue extends Value
{
int value;
}
class CharacterValue extends Value
{
char value;
}
class Main{
ArrayList<Value> values = null;
public static void main(String args[])
{
swtich(args[1])
{
case "integer":
values = new ArrayList<IntegerValue>();
break;
case "character":
values = new ArrayList<CharacterValue>();
break;
default:
values = new ArrayList<Value>();
}
}
}
类值
{
}
类IntegerValue扩展值
{
int值;
}
类CharacterValue扩展值
{
字符值;
}
班长{
ArrayList值=null;
公共静态void main(字符串参数[])
{
swtich(参数[1])
{
案例“整数”:
值=新的ArrayList();
打破
大小写“字符”:
值=新的ArrayList();
打破
违约:
值=新的ArrayList();
}
}
}
看起来ArrayList不支持动态绑定,但Array支持。当我执行Value[]values=newintegervalue[maxSize]时,它是通过创建超类类型的引用来编译的。但是,如果一开始我不知道大小,并且还需要数据结构的动态行为(类似于ArrayList的功能),该怎么办?有没有其他方法可以做到这一点?有其他的数据结构吗
提前谢谢。动态绑定是什么意思?为什么要创建自己的包装器类呢?提示:搜索“协方差和泛型”,这会给您一些提示。简而言之,
List
不是List
;如果您要通过List
来“声明”一个列表
,这将允许您向列表中添加任意值
s。即使我已将IntegerValue声明为值的子类?@Dhwanit:Nope<代码>列表这真是太棒了路易斯!:)