java 获取参数的类型的_java通过反射获取参数类型后如何类型转换

while (cellbody.hasNext()) {

Cell cell = cellbody.next();

// 这里得到此列的对应的标题

String titleString = (String) titlemap.get(k);

// 如果这一列的标题和类中的某一列的Annotation相同,那么则调用此类的的set方法,进行设值

if (fieldmap.containsKey(titleString)) {

Method setMethod = (Method) fieldmap.get(titleString);

//得到setter方法的参数

Type[] ts = setMethod.getGenericParameterTypes();

//只要一个参数

String xclass = ts[0].toString();

//判断参数类型

if(xclass.equals("class java.lang.String"))

{

setMethod.invoke(tObject, cell.getStringCellValue());

}

else if(xclass.equals("class java.util.Date"))

{

setMethod.invoke(tObject, sf.parse(cell.getStringCellValue()));

}

else if(xclass.equals("class java.lang.Boolean"))

{

Boolean boolname=true;

if(cell.getStringCellValue().equals("否"))

{

boolname=false;

}

setMethod.invoke(tObject,boolname );

}

else if(xclass.equals("class java.lang.Integer"))

{

setMethod.invoke(tObject,new Integer( cell.getStringCellValue()));

}

else if(xclass.equals("class java.lang.Long"))

{

setMethod.invoke(tObject,new Long( cell.getStringCellValue()));

}

}

// 下一列

2011年8月01日 14:53

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过 Java反射机制来获取集合的泛型类型,具体步骤如下: 1. 获取集合对象的 `Class` 对象,可以使用 `getClass()` 方法或者直接使用 `Class.forName()` 方法。 2. 获取集合对象的类型参数 `Type`,可以使用 `getGenericSuperclass()` 方法获取集合对象的超类,然后强制转换为 `ParameterizedType` 类型,从而获取类型参数 `Type`。 3. 判断类型参数是否是 `ParameterizedType`,如果是,则可以通过调用 `ParameterizedType` 的 `getActualTypeArguments()` 方法获取泛型参数类型,如果不是,则说明该类型没有泛型参数。 4. 获取泛型参数类型的具体类型,可以使用 `getTypeName()` 方法获取类型的名称,也可以使用 `getClass()` 方法获取类型的 `Class` 对象。 下面是一个示例代码,以 `List<String>` 为例: ```java import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); // 获取集合对象的 Class 对象 Class clazz = list.getClass(); // 获取集合对象的类型参数 Type Type type = clazz.getGenericSuperclass(); // 判断类型参数是否是 ParameterizedType if (type instanceof ParameterizedType) { // 获取泛型参数类型 Type[] actualTypeArguments = ((ParameterizedType) type).getActualTypeArguments(); for (Type t : actualTypeArguments) { if (t instanceof Class) { System.out.println("Class name: " + ((Class) t).getName()); } else { System.out.println("Type name: " + t.getTypeName()); } } } } } ``` 输出结果为: ``` Class name: java.lang.String ``` 可以看到,输出的结果是泛型参数类型的 `Class` 对象,它的名称为 `java.lang.String`。如果集合的元素类型不是简单类型,而是自定义类型,则输出的结果是自定义类型的全限定名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值