首页 > 代码库 > Java泛型方法与泛型类的使用------------(五)

Java泛型方法与泛型类的使用------------(五)

泛型的本质就是将数据类型也参数化, 普通方法的输入参数的值是可以变的,但是类型(比如: String)是不能变的,它使得了在面对不同类型的输入参数的时候我们要重载方法才行. 泛型就是将这个数据类型也搞成跟参数的值一样可以变的.

泛型分为泛型接口,泛型类和泛型方法. 泛型接口,泛型类大家都比较熟悉了,应该都用过List, ArrayList. List就是泛型接口,ArrayList就是泛型类,我们经常看到List <E>的声明, new ArrayList<E>()的定义, 这里面的E可以是String, 也可以自己定义的类. 我感觉泛型类就JDK提供的就基本够用了,自定义使用的场景非常少了. 反而是泛型方法,对与解析自定义数据结构非常有用, 类似于toString这种场景是百试不爽.

 

-----------------------------------------------------------泛型方法应用实例--------------------------------------------

泛型方法不一定要在泛型类里面

 

package Test;

import org.junit.Test;

public class fanxing {

    /**
     * 定义一个泛型方法,泛型方法也可以声明为static
     *@param t1
     */
//    public static <T> void testFanxing(T t1){
    public <T> void testFanxing(T t1){
        System.out.println(t1);
    }
    
    
    //测试泛型类
    @Test
    public void test1(){
        fanxing fx=new fanxing();
        fx.testFanxing(2);
        fx.testFanxing("字符串");
        fx.testFanxing(new User("1", "QLQ"));
    }
}

//用于测试泛型类的类
class User{
    private String id;
    private String name;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    protected User(String id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + "]";
    }
    
}

 

 结果:

技术分享

 

 

 -----------------------------------------------------------泛型类应用实例--------------------------------------------

 

package Test;

import org.junit.Test;

//可以有一个,也可以有多个
public class fanxinglei<T, T2> {
    // 泛型属性
    private T t1;

    public T getT1() {
        return t1;
    }

    public void setT1(T t1) {
        this.t1 = t1;
    }

    // 泛型方法
    public void testFanxing(T2 t2) {
        System.out.println(t2);
        System.out.println(this.getT1());
    }

    public static void main(String[] args) {
        fanxinglei<String, Integer> fanxinglei = new fanxinglei<String, Integer>();
        fanxinglei.setT1("泛型类");
        fanxinglei.testFanxing(4);
    }
}

 

 

 

 测试:

技术分享

 

Java泛型方法与泛型类的使用------------(五)