Java泛型问题,大虾们给点建议

答复哈 发布于 2010/05/06 16:05
阅读 831
收藏 2

代码1:

	public static <T> T[] subArray(T[] args, int start, int end) {
		T[] temp = (T[]) Array.newInstance(String.class, end - start + 1);
		for (int i = start; i <= end; i++) {
			temp[i - start] = args[i];
		}
		return temp;
	}

代码2:

	public static <T> T[] subArray(T[] args, int start, int end) {
		T[] temp = (T[]) Array.newInstance(args[0].getClass(), end - start + 1);
		for (int i = start; i <= end; i++) {
			temp[i - start] = args[i];
		}
		return temp;
	}

代码3:

	public static <T> T[] subArray(Class<T> c,T[] args, int start, int end) {
		T[] temp = (T[]) Array.newInstance(c, end - start + 1);
		for (int i = start; i <= end; i++) {
			temp[i - start] = args[i];
		}
		return temp;
	}

 

这三段代码都是实现的一个功能,就是截数组.

有个问题就是,怎么样才能在不传Class<T>的情况下保证方法正确,而我又不想用args[0].getClass()...

代码1假定传入的数组是String数组.

加载中
0
答复哈
答复哈

假设传入的是String数组,T就是String,怎么在方法里获取String的实例,或是String.class...最终是想获取T的数组.

这个是静态方法,没法getClass()...网上的getGenericSuperclass()方法行不通~

0
答复哈
答复哈

引用来自#4楼“xiaobin”的帖子

没有办法。

 唉...明明T传的是String,可就是没法获取String的Class..

0
老盖
老盖

spring里可以通过构造函数将Class传入

 public AAA(final Class<T> clazz) {
  this.clazz = clazz;
 }

配置里直接写类名即可:

        <bean id="aaa" class="com.123.AAA">
                <constructor-arg value="String"/>
        </bean>

0
答复哈
答复哈

引用来自#6楼“戏水”的帖子

spring里可以通过构造函数将Class传入

 public AAA(final Class clazz) {
  this.clazz = clazz;
 }

配置里直接写类名即可:

       
               
       

 谢谢.

可是不适应我这种情况,不难看出我这个方法应该是util这样包里的方法,一般情况下,最好是static的.

0
大东哥
大东哥

public static T[] subArray(T[] args, int start, int end)

{ T[] temp = (T[]) Array.newInstance(args.getClass().getComponentType(), end - start + 1);

for (int i = start; i <= end; i++) {

temp[i - start] = args[i];

 }

 return temp;

 }

0
答复哈
答复哈

引用来自#8楼“东明”的帖子

public static T[] subArray(T[] args, int start, int end)

{ T[] temp = (T[]) Array.newInstance(args.getClass().getComponentType(), end - start + 1);

for (int i = start; i <= end; i++) {

temp[i - start] = args[i];

 }

 return temp;

 }

 不错不错...谢谢哈大哥~

0
答复哈
答复哈

--------

结帖~

返回顶部
顶部