java 泛型使用和反射

Object是基类,所有类的祖宗;
Type是类型,如基本数据类型;
Class是对象,每个类的对象的共性做的抽象。

Type的值可以为:java.util.List<java.util.List<com.flyread.optwebcontainer.biz.httpRequest.HttpClientUtil>>

然后我们可以用......Class也是有getSimpleName()等方法的。

Class<?> keySonClazz = Class.forName(Type.getTypeName());

创建Class对象,Class<T> clazz = Object.class = obj.getClass();

T t = clazz.newInstance();

Class实例化后就是对象,如类A,A.class就是class对象。



反射详情:http://www.cnblogs.com/lzq198754/p/5780331.html

泛型例子:



利用泛型建泛型数组:

/**
     * 根据数组的最小一层非数组对象和数组的维度,生成多维度数组类型
     *
     * @param clazz      数组的最小一层非数组类型
     * @param dimensions 数组的维度
     * @param <T>
     * @return
     */
    protected <T> Class<?> genDimensionsArrayClass(Class<T> clazz, int dimensions) {
        if (dimensions == 1) {
            return Array.newInstance(clazz, 10).getClass();
        } else if (dimensions > 1) {
            return Array.newInstance(genDimensionsArrayClass(clazz, dimensions - 1), 10).getClass();
        } else {
            System.err.println("数组维度异常,异常维度为:" + dimensions);
            throw new TestngCSVException(TestngCSVException.OBJECT_TRANS, "数组维度异常,异常维度为:" + dimensions);
        }
    }

获得list、map、数组中的泛型对象:
  Field field = t.getClass().getDeclaredField(fieldName);
 String fieldTypeName = field.getGenericType().getTypeName();

fieldName为对应list或map的实体对象名称,fieldTypeName得到的结果是:java.util.List<java.lang.String>字符串,java.util.Map<java.lang.String, java.lang.String>,java.util.String[]字符串。然后去处理这些字符串吧,用Class.forName(");又将字符串变成对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值