关于java中泛型类和泛型方法

1.先说一下泛型常用的字母

    ? 表示不确定的java类型。 
    T  表示java类型。 
    K V 分别代表java键值中的Key Value。 
    E 代表Element。
2.什么是泛型
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?
顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),
然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,
通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,
这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

3.说一下我实际遇到的问题,刚开始对泛型就有一定的了解,但是在看源码的时候懵了,<T>这是个什么东东

public static <T> T getBean(Class<T> cls){
    return getFactory().getBean(cls);
}
看了许多资料加上自己分析,大概明白了,这是
泛型方法第二个 T 代表返回返回类型为泛型,第一个<T>带边声明一个泛型,上一下代码
/**
 * 定义泛型类
 * @param <T>
 */
public class GenericFruit<T> {
    /**
     * 泛型参数
     */
    private T first;
    private T second;
    /**
     * 返回值泛型的方法   <A> 是定义泛型 A是使用泛型
     */
    public T getMax(){   //这里的话就是直接规定返回一个在类上声明好的泛型.

        return first;
    }
    public <A> A getMin(Class<A> aClass){//<A>是定义泛型,  A 是使用泛型 当然A可以是任意的,只要和类上的不重复即可,否则相当于重复声明
        return (A)second;              //在这定义了一个泛型方法,并声明了一个新的泛型,且使用这个泛型进行传值
        //输出结果这里我也不是很明白,个人认为(A)是强转,有知道的可以评论
}
    public static void main(String[] args) {
        GenericFruit<String> gf = new GenericFruit<String>();//实例化泛型类
        String max = gf.getMax();//调用第一个方法发现直接返回String,已经规定了的泛型
        System.out.println(max); 
        Integer min = gf.getMin(Integer.class);//调用第二个方法发现在泛型类已经规定的情况下,重新定义了泛型方法,直接返回Integer
    }
} 
以上就是我的一些了解     

猜你喜欢

转载自blog.csdn.net/qq_40846086/article/details/81018533