java 泛型详解

Java泛型中的标记符含义:
E - Element (在集合中使用,因为集合中存放的是元素)
T - Type(Java 类)
K - Key(键)
V - Value(值)
N - Number(数值类型)
? - 表示不确定的java类型
S、U、V - 2nd、3rd、4th types

Class在实例化的时候,T要替换成具体类
Class

package com.model.test;
import com.hlin.sensitive.test.Box;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
class Container {
    public static void main(String[] args) {
        Box box = new Box();
        box.setWidth(200);
        box.setHeight(100);

        Box box1 = new Box();
        box1.setWidth(400);
        box1.setHeight(300);
        String key = "width";

        List sourceList = new ArrayList();
        sourceList.add(box);
        sourceList.add(box1);

        List result = trans(sourceList, key);
        System.out.println(result);

    }

    public static <E, T> List<E> trans(List<T> sourceList, String key) {
        List<E> resultList = new ArrayList<E>();
        if (sourceList.isEmpty() || sourceList.size() == 0) {
            return resultList;
        }

        String methodName = "get" + key.substring(0, 1).toUpperCase() + key.substring(1);
        try {
            Method method = sourceList.get(0).getClass().getMethod(methodName, new Class<?>[] {});
            for (T eleObj : sourceList) {

                try {
                    resultList.add((E) method.invoke(eleObj, new Class<?>[]{}));
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }

            }

        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }

        return resultList;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值