JAVA 泛型方法

public static void main(String[] args) throws Exception { String[] arr = new String[]{"1", "2", "3"}; changeAddr(arr, 0, 2); System.out.println(Arrays.toString(arr)); Person person = new Person(); //T 做为对象传入,返回一个T类型对象
        String[] arr1 = new String[]{"hhh", "20"}; //这里能够看到,Person并不须要进行强转,由于返回值类型在传入T的时候在返回值以前的<T>进行了定义,将其定义为了Person
        person = handleData(person, arr1); System.out.println(person.toString()); } /** * 简单的demo,示例交换数组索引位置的值 * * @param arr 传入的数组 * @param begin 交换索引 * @param end 交换索引 * @param <T> 定义的一个类型 * <T>表示声明一个泛型类型T,在调用方法,传入参数的时候再肯定T的类型,T能够是全部类型,可是肯定了是传入的类型, * 好比如下方法,传入的为 T[] ,就表明T是声明这个参数的类型使用 * 其实T能够使用任意的字符代替,可是通常使用 T 表示Type 类型的意思(声明一个类型 ) * T一般放在方法的返回值声明以前 * T不是一个类。可是由于在以前的<T>定义好了一个泛型T,则泛型类型T能够做为数据类型使用 * * <> 方法中传入的T,其实就是声明的<T> </> */
    static <T> void changeAddr(T[] arr, Integer begin, Integer end) { T temp = arr[begin]; arr[begin] = arr[end]; arr[end] = temp; } /** * 示例使用泛型进行对象的传入与处理 * @param t 泛型类型 * @param names 参数值 * @param <T> 定义的传入与返回的持有对象的类型 * @return 传入的类型 * @throws Exception */
    static <T> T handleData(T t, String[] names) throws Exception { Class c = t.getClass(); Field[] fields = c.getDeclaredFields(); Method[] methods = c.getDeclaredMethods(); for (Field field : fields) { //暴力访问
            field.setAccessible(true); for (String s : names) { field.set(t, s); } } return t; }

 注意:使用泛型以前必定要对泛型进行声明,在返回值以前的<T>就是对泛型类型的声明数组

语法:spa

public <泛型声明> T methodName(args...);
相关文章
相关标签/搜索