打字猴:1.700447121e+09
1700447121
1700447122 此时,运行就没有任何问题了。剩下的问题就是怎么在运行期获得T的类型,也就是tType参数,一般情况下泛型类型是无法获取的,不过,在客户端调用时多传输一个T类型的class就会解决问题。
1700447123
1700447124 类的成员变量是在类初始化前初始化的,所以要求在初始化前它必须具有明确的类型,否则就只能声明,不能初始化。
1700447125
1700447126
1700447127
1700447128
1700447129 编写高质量代码:改善Java程序的151个建议 [:1700438168]
1700447130 编写高质量代码:改善Java程序的151个建议 建议95:强制声明泛型的实际类型
1700447131
1700447132 Arrays工具类有一个方法asList可以把一个变长参数或数组转变为列表,但是它有一个缺点:它所生成的List长度是不可改变的,而这在我们的项目开发中有时会很不方便。如果你期望生成的列表长度是可变,那就需要自己来写一个数组的工具类了,代码如下:
1700447133
1700447134 class ArrayUtils{
1700447135
1700447136 //把一个变长参数转变为列表,并且长度可变
1700447137
1700447138 public static<T>List<T>asList(T……t){
1700447139
1700447140 List<T>list=new ArrayList<T>();
1700447141
1700447142 Collections.addAll(list, t);
1700447143
1700447144 return list;
1700447145
1700447146 }
1700447147
1700447148 }
1700447149
1700447150 这很简单,与Arrays.asList的调用方式相同,我们传入一个泛型对象,然后返回相应的List,代码如下:
1700447151
1700447152 public static void main(String[]args){
1700447153
1700447154 //正常用法
1700447155
1700447156 List<String>list1=ArrayUtils.asList(“A”,“B”);
1700447157
1700447158 //参数为空
1700447159
1700447160 List list2=ArrayUtils.asList();
1700447161
1700447162 //参数为数字和字符串的混合
1700447163
1700447164 List list3=ArrayUtils.asList(1,2,3.1);
1700447165
1700447166 }
1700447167
1700447168 这里有三个变量需要说明:
1700447169
1700447170 (1)变量list1
[ 上一页 ]  [ :1.700447121e+09 ]  [ 下一页 ]