鱼C论坛

 找回密码
 立即注册
查看: 2755|回复: 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. 泛型类
泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。类型参数声明部分可包含一个或多个类型参数,参数间用逗号隔开。
  1. public class Box<T> {   
  2.         private T t;

  3.         public void add(T t) {
  4.         this.t = t;
  5.         }

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

本帖被以下淘专辑推荐:

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 10:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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