java 泛型3——泛型方法

    在类中包含参数化方法,而这个方法所在的类可以使泛型类,也可以不是泛型类。即,是否拥有泛型方法,与其所在的类是否是泛型没有任何关系。

    泛型方法使得该方法独立于类而产生变化(就是独立于类,跟是不是泛型类没有直接关系)。泛型方法的基本规则就是:无论何时,只要你能做到,你就应该尽量只使用泛型方法(就是相对于泛型类,首选泛型方法)。也就是说,如果使用泛型方法可以取代将整个类泛型化,那就应该只用泛型方法(因为它可以使事情更清楚明白)。另外,需要注意的一点就是对于一个static的方法而言,无法访问泛型类的类型参数,所以,如果static方法需要使用泛型能力,就必须使其成为泛型方法。

    要定义泛型方法,只需将泛型参数列表置于返回值之前,就像下面这这样:

package com.zy.test;

public class GenericMethods {
    public <T> void f(T x) {
        System.out.println(x.getClass().getName());
    } 
    
    public static void main(String[] args) {
        GenericMethods gm = new GenericMethods();
        gm.f("  ");
        gm.f(1);
        gm.f(1.0);
        gm.f(1.0F);
    }
}

输出:

java.lang.String
java.lang.Integer
java.lang.Double
java.lang.Float
    注意,在使用泛型类时,必须在创建对象的时候指定类型参数的值,而使用泛型方法时通常不必指明参数类型,因为编译器会为我们找出具体的类型。这成为类型参数推断。因此,我们可以像调用不同方法一样调用f(),而且好像f()被重载了好多次一样。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值