鱼C论坛

 找回密码
 立即注册
查看: 3100|回复: 1

[学习笔记] Java-023泛型、静态导入、可变参数

[复制链接]
发表于 2018-12-27 09:47:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 moc 于 2019-1-6 12:39 编辑

1、泛型
Java 泛型(generics):   JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
泛型的本质:  参数化类型,也就是说所操作的数据类型被指定为一个参数。
        与C++泛型用法基本一致,也存在泛型类和泛型方法,不同的是Java的泛型类型参数只能用来表示引用类型,不能用来表示基本类型,如  int、double、char 等。但是传递基本类型不会报错,因为它们会自动装箱成对应的包装类
1. 泛型类
泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。类型参数声明部分可包含一个或多个类型参数,参数间用逗号隔开。
public class Box<T> {   
        private T t;
 
        public void add(T t) {
        this.t = t;
        }

        public T get() {
            return t;
        }
}
2. 泛型方法
① 泛型方法包含有泛型类型参数,也可以有普通参数
② 类型参数需要放在修饰符后面、返回值类型前面
③ 一旦定义了类型参数,就可以在参数列表、方法体和返回值类型中使用。
④ 与使用泛型类不同,使用泛型方法时不必指明参数类型,编译器会根据传递的参数自动查找出具体的类型。泛型方法除了定义不同,调用就像普通方法一样。
⑤ 泛型方法与泛型类没有必然的联系,泛型方法有自己的类型参数,在普通类中也可以定义泛型方法
class Point<T1, T2>{
        T1 x;
        T2 y;
        // 定义泛型方法
        public <T1, T2> void printPoint(T1 x, T2 y){
        T1 m = x;
        T2 n = y;
        System.out.println("This point is:" + m + ", " + n);
            }
}
3. 泛型接口
在Java中也可以定义泛型接口,与泛型类类似。
interface Info<T> {
    public T getVar();
}
4. 类型擦除
如果在使用泛型时没有指明数据类型,那么就会擦除泛型类型, 即编译器会将所有数据向上转型为 Object,所以在取出使用时要向下转型成原始的类型。
5. 类型通配符
类型通配符用于限制泛型的可用类型,有三种:
        ?                    ------> 无界通配符,代表未知类型,等同于 < ? extends Object>
        ? extends E   ------> 代表E及其子类
        ? super E      ------> 代表E及其父类
2、静态导入
功能:   直接导入Java类中的静态方法。
格式:  
                import static 包名....类名.方法名;
注意:
        ① 方法必须是静态的;
        ② 如果多个类下有同名的方法,不好区分了,需加上类前缀(如:java.lang.Math.abs(-100))。
3、可变参数
功能:   定义方法的时候, 参数个数不明确时使用。
格式:  
        修饰符 返回值类型 方法名(数据类型…  变量名){}
注意:
        ① 可变参数变量其实存在一个数组中;
        ② 如果一个方法有可变参数,并且有多个参数,可变参数肯定是最后一个
public static int sum(int... a) {
        int s = 0;
        for(int x : a){
                s +=x;
        }                
        return s;
}

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-5 11:03:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 22:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表