public static <T> boolean isEmpty(final T... array) 如何理解?(泛型、可变参数、参数前final)

今天看 hutool 的工具类的时候遇到一个方法,

public static <T> boolean isEmpty(final T... array) {
		return array == null || array.length == 0;
	}

一、对 public static <T> boolean isEmpty(final T... array) 中的多个 T,和 三个点点不甚理解,于是通过各种百度理解了一番,在这里整理解释一下。

其实这里是缩写,完整版应该是这样的:

public <Type extends Object> static List<Type> asList(Type... a)

T是个泛型的类型,三个T表示同一种类型,就是List的元素类型,他们有不同作用

第一个T:为了显式告诉编译器,该泛型的类型

第二个T:表示返回值,就像正常我们在方法名前面加的返回值类型一样,这里是泛型表示,所以写作List<T>

第三个T:表示传入的参数

以上参考自:http://tieba.baidu.com/p/4033681041 (感谢)


二、至于那三个点点是可变参数的意思(好久没用,居然忘记了,此处权当复习了),关于可变参数,这里举个简单的例子,你就懂了:

public class GenericTest {

    /**
     * 求所有传入数值的和
     * @param args 可变参数,表示多个数组的组合
     * @return 传入数字的总和
     */
    public static int getSum(int... args) {
        int sum = 0;
        for (int arg : args) {
            sum += arg;
        }
        return sum;
    }

    // 测试
    public static void main(String[] args) {

        int[] intArray1 = {1, 2, 3};
        System.out.println(getSum(intArray1));
        System.out.println(getSum(2, 3, 4, 5));

    }
}

你会发现这个可变参数是个很好用的东西,数组数字都可以传进去进行处理,但是可变参数在使用时也有一些要注意的地方,这里就不多讲了,大家可以自行百度。


三、为什么方法参数前要用 final 修饰

我一开始猜测了一下用意,百度发现我的猜测是对的,但是人家说得很好

1、常量设置为 final,为了防止程序员在以后修改程序时,无意间修改了这个不用改修改的值,毕竟程序员的工作不是一个人的工作,你设置为 final,不管是自己以后看,还是别人看的时候,都会立刻知道该值不能改动。

2、另外final常量一般设置为static的,一定程度上节省了内存开销。

3、如果 final修饰的是引用型变量,那么它就表示不可以改变它的内存地址,但是值是可以变动的。比如 final Map map,它不允许你这样:map = new HashMap();  但是允许你这样:map.put("aaaa", "1111")

第三点感谢百度知道的贡献:https://zhidao.baidu.com/question/336562093.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我有明珠一颗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值