java菜鸟 泛型问题求解

qq_35682586 2019-04-16 03:17:44
写了一个public class Array<E>
里面一直都在用private E[] info 这样一个泛型数组操作
里面是用info = (E[]) new Object[INITIAL_CAPACITY]进行的初始化
请问在main方法运行的时候该如何确定泛型的真正类型,以及如何向info数组里添加元素呢?
比如要使info={1,2,3,4},main方法里该如何实现呢?
...全文
200 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
第一名zz 2019-04-18
  • 打赏
  • 举报
回复
泛型在调用时需要自己确定下来

public class Test4 {

	public static void main(String[] args) {
		Array<Integer> array = new Array<>();//调用的时候泛型是需要自己明确下来
		Integer[] arr = {1,2,3,4};			
		array.setInfo(arr);
		System.out.println(Arrays.toString(array.getInfo()));
	
	}
}

class Array<E>{
	
	private E[] info;
	//info = (E[]) new Object[INITIAL_CAPACITY];

	public E[] getInfo() {
		return info;
	}

	public void setInfo(E[] info) {
		this.info = info;
	}
	
}
随缘不随便 2019-04-16
  • 打赏
  • 举报
回复
首先Java中的泛型都是伪泛型,在编译期泛型会被进行类型擦除,jvm看到的.class文件中不会存在泛型的概念,用“ javap -c 类名”命令(dos界面命令)进行反编译在生成的文件会发现泛型信息进行了注释,java就会通过这些标记记录的注释信息确定泛型的真正类型,如果没有类型默认使用object,数组在java中是初始化之后内存固定,所以你应该把数组建成ArrayList数组 通过add方法添加元素
maradona1984 2019-04-16
  • 打赏
  • 举报
回复
Array<Integer> array = new Array<Integer>();
这个不就行了?

62,626

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧