泛型的回顾

news/2024/11/7 14:44:01/

泛型

​ 泛型是一种安全机制,是一种书写的规范,它和接口的作用有着一定的类似,都是在制定规则。提升代码的复用功能,这里不单单对于功能模块进行一定的要求封装,同时也需要对数据类型进行统一的约束。

【重点】

  1. 泛型满足数据类型支持多样化
  2. 泛型严格遵守数据类型一致化要求
  3. 泛型的核心目标是【增强方法】
常见的自定义的占位符<T>: 表示的是类型<E>:表示的是元素<K>:表示的是key键值 <V>:表示的是value值<N>:表示的是Number<?>:表示的是不确定的java类型

泛型的方法声明和其他的方法一样,注意类型只能是代表的引用类型,基本数据类型要写成包装类型

1.1 泛型在方法中的使用

泛型在方法中的使用格式:public static <T> 返回值类型[自定义泛型] 方法名称(必须存在一个对应的泛型的参数){方法体内能够使用自定义的泛型
}

注意:

​ 1.方法声明的泛型,在方法的参数中必须有一个参数是对应声明的自定义泛型。当前参数是用来约束方法内所有使用到泛型的位置对应的具体数据类型是什么。

​ 2.自定义的泛型声明在返回值之前,已经保证方法的参数和返回值都可以使用对应的泛型。

论证

    public static void main(String[] args) {/*** 针对于整型的数组,采用的必须是Int类型的包装类,原因泛型采用的只能是引用类型*/Integer test = printArray(123);String test1 = printArray("123456");//对于对象类型,方法返回的也是对象Demo1 test2 = printArray(new Demo1());System.out.print(test);System.out.print(test1);System.out.print(test2);}/*** 泛型在方法中的使用,功能是展示任意数组的方式** @param arr 指定的数组,但是没有确定数据类型,或者说数据类型是自定义数据类型* @param <T> 自定义泛型无意义占位符*/public static <T> T printArray(T t){return t;}

1.2 泛型在类中的使用

泛型在类中的使用格式:public class 类名<自定义泛型无意义大写字母占位符>{在类内部的所有成员方法或者成员变量都是可以使用自定义泛型的。}

【注意】:

  1. 成员变量不建议使用自定义泛型

  2. 类声明泛型结束之后,在类内的所有成员方法中使用的泛型都是类约束的泛型具体数据类型

  3. 如果没有约束类声明泛型,所有使用到泛型的位置都是Object,类型直接是祖宗类。

  4. 类声明的自定义泛型不能够用于类内的静态方法【没有对象】,并且对于类声明的泛型,在类加载的时候静态方法无法确定类型。

  5. 类声明自定义泛型,需要通过创建对象的方式来进行约束;

    Type type = new Type<>();

论证

/*** 定义一个带有自定义泛型的类** @param <T> 百事得是自定义泛型无意义占位符*/
class Type<T>{public T test1(T t){return t;}public void test2(T t1,T t2){System.out.println(t1);System.out.println(t2);}
}
public class Demo {public static void main(String[] args) {Type<String> type = new Type<>();//字符串类型String test1 = type.test1("老北京烤鸭");//整型类型Type<Integer> integerType = new Type<>();Integer integer = integerType.test1(123456);/*** 明确告知编译器这里的泛型对应的具体的数据类型是Demo2类型*/Type<Demo1> type1 = new Type<>();}
}

1.3 泛型在接口中的使用

泛型在接口中的使用格式:inferface 接口名称 <自定义泛型无意义占位符>{能够使用泛型的成员方法
}

注意:

  1. 泛型接口中的泛型不能够用于成员变量中,原因:对于接口中的成员变量而言,其缺省属性是public static final ,所以对于final修饰的变量是需要进行初始化操作的,初始化后无法进行修改。但是对于泛型来说是没有办法上来就确定数据的类型,所以是存在错误的,故,接口中的泛型是不能够用于成员变量。接口声明的泛型有且仅能用于类内的成员方法。1. 遵从带有自定义泛型的接口类,一种可以遵循从过程中明确告知泛型具体的类型,一种是在创建类对象中明确具体的数据类型(代码见下)1. 接口自带的泛型,遵循接口的实现类有两种方案可以implements当前接口:自由、规矩。【规矩】:接口的泛型明确接口中的方法,使用泛型对应的具体数据类型。class Type<T implements A<String> 【自由】:类名之后和接口同名自定义泛型,泛型对应的具体的数据类型是需要在创建当前类对象时进行约束。class Type<T> implements A<T>

论证

/*** 定义一个接口A,类型是自定义泛型** @param <T> 自定义泛型占位符操作*/
interface A<T>{/*** 用来进行检测输出,返回的类型是泛型* @param t*/void test(T t);
}class TypeB<T> implements A<String>{@Overridepublic void test(String s) {System.out.println("采用的是规矩的模式");}
}class TypeA<T> implements A<T>{@Overridepublic void test(T t) {System.out.println("采用的是自由的模式");}
}/*** @author sky */
public class Demo1 {public static void main(String[] args) {/*** 自由模式的测试实现*/TypeA<Integer> typeA = new TypeA<>();typeA.test(123);/*** 规矩模式进行测试操作*/TypeB<String> typeB = new TypeB();typeB.test("1234566");}
}

-----待补充


http://www.ppmy.cn/news/634393.html

相关文章

我有问题请教各位硬件高手:电脑呈现这个症状是不是电源的输出功率不够?...

环境&#xff1a;华硕A7N8的主板&#xff0c;AMD1700 (OC到1500MHz),有2个硬盘&#xff0c;一个DVD RW光驱显卡声卡网卡 症状&#xff1a;有时候开机某个硬盘检测不到&#xff0c;或者停在硬盘检测画面&#xff0c;很久没有继续&#xff1b; 我的解决&#xff1a;我每次都是把硬…

YH2000—C单门禁控制器

http://sinmen001.gnway.net 第一章:YH2000—C单门禁控制器 第一节:使用操作说明 YH2000单门禁控制器由台湾高得公司出品,保修期为一年,需要使用门禁专用电源箱提供大功率的稳压DC12V,3A以下 ,直接接入普通12V电源会导致工作不正常或损坏 说明:*为退出系统编程,+为继…

年末最大规模汽车零部件采购会11日在沪开幕

12月11日&#xff0c;盖世汽车网在上海明锐大酒店举办了大规模的汽车零部件采购配对会&#xff0c;参会采购商包括GM、吉奥汽车、PSA、大宇国际、TATA东南亚公司、莲花汽车、利纳马、美国百事得等50多家&#xff0c;采购商参会规模达到2009年度之最。 在当前国内企业汽车零部件…

java程序员面试复习资料2——[JAVA基本概念]

/**作者&#xff1a;高雪峰 Email:ourjavaqq.com */ J2SE的内容&#xff1a; 第一章&#xff1a;JAVA编程基础 考点&#xff1a; 一.JAVA的基本概念 1.JAVA的基本特点 答案&#xff1a;简单&#xff0c;面向对象&#xff0c;跨平台&#xff08;可移植性&#xff09;&…

换工作的感受

换工作&#xff0c;换工作&#xff1b;只是从一个沼泽跳到另一个沼泽而已。 5月29日&#xff0c;来到30所&#xff1b;这里的环境也还不错&#xff0c;办公室两台空调&#xff0c;全新的液晶电脑&#xff0c;超宽带宽&#xff0c;纯净水供应。可惜开发模式我不是太欣赏&#xf…

CSS文字样式小结

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>首页</title><!-- 接下来演示文字样式 --><style>/*这是字符间距*/h1{letter-spacing: 2px;}h2{letter-spacing: -3px;}/*其他属性…

及时当勉励,岁月不待人--静心食粮

命由我作&#xff0c;福自己求 出自袁了凡著的《了凡四训》&#xff0c;由立命之学、改过之法、积善之方、谦德之效四部分构成。 在立命之学中讲到人的祸福、命运其实都掌握在自己的手里。《易经》上也说&#xff1a;“积善之家必有余庆&#xff0c;积不善之家必有余殃。”还说…

docker目录 docker日志清理 docker迁移 docker清理 overlay2限制overlay2.size

# 查看docker相关存储占用 docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 20 20 2.068GB 315.5MB (15%) Containers 39 …