Java泛型学习

一、泛型类
1、泛型类定义的语法如下:

[访问修饰符] class 类名称 <T>

2、泛型类使用代码如下:

//定义一个泛型类
public class Base<T> {
    T m;
    public Base(T t){
        m = t;
    }
    public T getM(){
        return m;
    }
    public void print(){
        System.out.println("base print : " + m);
    }
 //使用该类
 Base<String> base=new Base<String>("123");//只能是引用类型
 Base<Integer> nInteger=new Base<Integer>(123);//只能是引用类型
 Base string=new Base("abc");
 Log.e("wangqi","string=="+string.getM());
 Base mInt =new Base(123);
 Log.e("wangqi","mInt=="+mInt.getM());
 Base mDouble=new Base(123.00);
 Log.e("wangqi","mDouble=="+mDouble.getM());
 Base mBoolean=new Base(true);
 Log.e("wangqi","mBoolean=="+mBoolean.getM());
 Base mChar=new Base('c');
 Log.e("wangqi","mChar=="+mChar.getM());
 Base mFloat=new Base(123.1);
 Log.e("wangqi","mFloat=="+mFloat.getM());

3、日志结果

12-28 21:14:50.307 3183-3183/wq.com.testdemo E/wangqi: string==abc
    mInt==123
    mDouble==123.0
12-28 21:14:50.308 3183-3183/wq.com.testdemo E/wangqi: mBoolean==true
    mChar==c
    mFloat==123.1

备注说明:

  • 泛型类的主要作用在于类被实例化后,传入具体的类型参数,对类的成员属性的类型和成员方法的参数类型和返回值类型进行替换
  • T可以用任何一种引用类型,但是不允许使用基本类型,如int、double、char、boolean等是不允许的。泛型类定义时,可以使用T来定义其成员变量和成员方法的返回值和参数
  • 泛型标识,可以是字母、中文字符等,不过一般用大写英文字符

二、泛型方法
1、泛型方法的定义如下:

[public] [static] <T> 返回值类型 方法名(T 参数列表)

2、泛型类使用代码如下:

public class MainActivity extends AppCompatActivity {

    private String a[]={"a","b","c","d","e"};
    private Integer c[]={1,2,3,4,5};
    private Character b[]={'1','2','3','4','5'};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                print(a);
                print(b);
                print(c);

            }
        });   
    }
    public  <M> void print(M[] list) {
        System.out.println();
        for (int i = 0; i < list.length; i++) {
            Log.e("wangqi","list[i]=="+list[i]) ;

        }
        System.out.println();
    }


}

3、日志结果

12-28 21:34:36.466 3904-3904/wq.com.testdemo E/wangqi: list[i]==a
12-28 21:34:36.467 3904-3904/wq.com.testdemo E/wangqi: list[i]==b
    list[i]==c
    list[i]==d
    list[i]==e
    list[i]==1
    list[i]==2
    list[i]==3
    list[i]==4
    list[i]==5
    list[i]==1
    list[i]==2
    list[i]==3
    list[i]==4
    list[i]==5

备注说明:

  • 泛型方法主要用于容器类,Java中任何方法,包括静态的(注意,泛型类不允许在静态环境中使用)和非静态的,均可以用泛型来定义,而且和所在类是否是泛型没有关系
  • 使用泛型方法时,至少返回值或参数有一个是泛型定义的,而且应该保持一致,否则可能会受到各种限制

三、泛型接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值