public void setSRC(int var)
{
if (src== null)
{
src = new int[1];
src[0] = var;
}
else
{
int i = 0;
int[] temp = null;
temp = new int[src.length];
temp = src;
i = temp.length;
src = new int[i+1];
for (int j =0; j < temp.length ; j++)
src[j] = temp[j];
src[i] = var;
}
}
我希望将此方法设为通用或模板方法。任何形式的帮助表示赞赏。期待它
答案 0 :(得分:5)
使用集合而不是数组。除了Java数组不与泛型混合之外,它们实际上被设计为附加到。您的代码可以替换为:
private List<T> src = new ArrayList<T>();
public <T> void setSRC(T var) {
src.add(var);
}
答案 1 :(得分:0)
使用通用集合,使用Java数组。
public <T> void setSRC(T var)
而不是
new int[1]
使用
Collection<T> collection = new ArrayList<T>();
答案 2 :(得分:0)
这种表示法对于Java初学者来说非常混乱。所以这里是整数类型值的jqno示例:
private List<Integer> src = new ArrayList<Integer>();
public void setSRC(Integer var) {
src.add(var);
}
现在src是一个只能存储Integer类型对象的ArrayList,这与你的问题非常接近。它不能存储int值(int类型不是对象),但Java 5/6会在必要时将int转换为Integer(autoboxing),因此您可以使用(int)i调用setSRC。
如果要使用数组并需要更改大小,请查看System.arraycopy(..)方法。
答案 3 :(得分:-1)
此代码将创建一个具有通用数据类型的类,并将存储该数据类型的动态对象数组。
import java.util.*;
class Test2<T>
{
private Collection<T> src = new Vector<T>();
public void setSRC(T var)
{
src.add( var );
}
public static void main( String[] args )
{
Test2 t = new Test2<Integer>();
t.setSRC( 5 );
Test2 t2 = new Test2<Double>();
t.setSRC( 5.5 );
}
}
问题是,如果这就是你所做的一切,就没有必要打扰了。看起来你正在尝试编写自己的动态数组类,而Java在Collections Framework中有很多类可供选择。为什么重新发明轮子?
现在,如果您正在尝试做一些具体的事情,请告诉我们您要完成的工作,我们可以提供更好的答案。