黑马程序员技术交流社区
标题: 关于泛型方法参数传递的问题 [打印本页]
作者: 孔肖 时间: 2012-8-11 11:57
标题: 关于泛型方法参数传递的问题
定义一个方法,能够将任意类型的数组中的元素转换成相应类型的对象
public static <T> void fillObject(T[] t, T obj)
{
for(int i=0; i<t.length; i++)
{
t = obj;
}
}
例如 :将 int[] arr = {1,2,3}; 中的元素转变成相应的Integer对象,
在调用fillObject()方法的时候,参数应该怎么传呢?
作者: 李知伦 时间: 2012-8-11 15:23
public static <T> void fillObject(T[] t, T obj)
{
for(int i=0; i<t.length; i++)
{
t = obj;
}
}
先说你的3个问题
1.目标是:任意类型的数组中的元素转换成相应类型的对象
但是你只定义了一个T obj对象,它无法容纳所有数组元素
所以你可以定义一个集合替代单个对象
2. t = obj;赋值时,把你想赋值的对象放前面,应该是obj=t;
3.将 int[] arr = {1,2,3}; 中的元素转变成相应的Integer对象
其中int和Integer不是一个类型,所以当你用泛型T的时候,传入的对象不符合要求
所以应该是Integer [] arr = {1,2,3};- import java.util.*;
- public class test{//TestfillObject {
- public static void main(String args[]) {
-
- Integer [] arr = {1,2,3};
- Collection<Integer> a=new ArrayList<Integer>();
- fillObject(arr,a);
- System.out.println(a);
-
- }
- public static <T> void fillObject(T[] t,Collection<T> obj)
- {
- for(T temp:t){
- obj.add(temp);
- }
- }
- }
复制代码
作者: 王程 时间: 2012-8-11 18:58
如果你想问的是包装类的拆箱和装箱的原理的话,我查看了一下API
public static final Class<Integer> TYPE = (Class<Integer>) Class.getPrimitiveClass("int");
final static char[] digits = {
'0' , '1' , '2' , '3' , '4' , '5' ,
'6' , '7' , '8' , '9' , 'a' , 'b' ,
'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
'o' , 'p' , 'q' , 'r' , 's' , 't' ,
'u' , 'v' , 'w' , 'x' , 'y' , 'z'
};
final static char [] DigitTens = {
'0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
'1', '1', '1', '1', '1', '1', '1', '1', '1', '1',
'2', '2', '2', '2', '2', '2', '2', '2', '2', '2',
'3', '3', '3', '3', '3', '3', '3', '3', '3', '3',
'4', '4', '4', '4', '4', '4', '4', '4', '4', '4',
'5', '5', '5', '5', '5', '5', '5', '5', '5', '5',
'6', '6', '6', '6', '6', '6', '6', '6', '6', '6',
'7', '7', '7', '7', '7', '7', '7', '7', '7', '7',
'8', '8', '8', '8', '8', '8', '8', '8', '8', '8',
'9', '9', '9', '9', '9', '9', '9', '9', '9', '9',
} ;
final static char [] DigitOnes = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
} ;
显而易见,Integer这个类是把所有可能用到的数字与小写字母都提前封装在了集合中,等程序用到Integer类,或者需要将int类型转换成Integer类型时,再将这个数字对应的元素转换一下就可以了,Integer中的方法都是操作的数组中的元素
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |