java 如何创建泛型数组_Java如何:从具有泛型的类创建泛型数组?

我有一个ClassClass ClassO.和类SecondClass< O&gt ;,我想在SecondClass< O>中创建一个O []在从FirstClass< O>调用的例程中,其中O是通用类参数.我找不到如何执行此操作.

我特别需要O [](而不是ArrayList O或类似的东西),因为我需要经常在循环体内获取它的元素,这对我算法的执行时间很重要.

因此,我希望遵循这些原则.

public class FirstClass {

void someRoutine(n and other params) {

//Do some stuff

SecondClass = new SecondClass(n, possibly_other_params);

//Do some stuff

}

}

public class SecondClass {

O[] myArray;

SecondClass(int n, possibly_other_params) {

//Here the constructor that creates an O[n]

}

}

我在网上找到了一些方法,但不适用于我的情况:

>使用O [] array =(O [])new Object [n];但这不能编译.

>使用Object []数组= new Object [n];并在每次我向数组请求内容时执行(O)强制转换,但这太慢了

>使用Array.newInstance(Class< O> type,int n);和O o;和type = o.class,但它抱怨现在类型为Class< CAP#1>. CAP#1表示什么,而不是Class< O>类型.

我应该如何在Java中正确地做到这一点,并牢记最佳执行速度?

解决方法:

Java对泛型的处理非常粗糙,但是如果您准备进行细微调整,则可以完成接近所需的操作.请参见:

public class FirstClass {

Class type;

public static FirstClass create(Class type) {

return new FirstClass(type);

}

public FirstClass(Class type) {

this.type = type;

}

public void routine(int size /*, other params */ ) {

SecondClass instance = new SecondClass(type, size);

}

}

public class SecondClass {

public O[] array;

@SuppressWarnings("unchecked")

public SecondClass(Class type,int size) {

array = (O[])Array.newInstance(type,size);

}

}

和一个用例:

FirstClass instance = FirstClass.create(Integer.class);

instance.routine(110);

这只是一个粗糙的示例,尽管我确信您无需使用此方法即可完成类似的操作.

标签:generics,java

来源: https://codeday.me/bug/20191031/1979379.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值