码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-08-01 20:34:46      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:opd   数据结构   log   evo   pat   imp   car   类型   msi   

泛型的本质就是将数据类型也参数化, 普通方法的输入参数的值是可以变的,但是类型(比如: 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泛型方法与泛型类的使用------------(五)

标签:opd   数据结构   log   evo   pat   imp   car   类型   msi   

原文地址:http://www.cnblogs.com/qlqwjy/p/7270069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!