当前位置: 首页 > news >正文

动漫网站做毕业设计简单吗成都城乡建设局官方网站

动漫网站做毕业设计简单吗,成都城乡建设局官方网站,信誉好的网站开发,用网站做淘客怎么赚钱✅作者简介#xff1a;大家好#xff0c;我是Leo#xff0c;热爱Java后端开发者#xff0c;一个想要与大家共同进步的男人#x1f609;#x1f609; #x1f34e;个人主页#xff1a;Leo的博客 #x1f49e;当前专栏#xff1a;每天一个知识点 ✨特色专栏#xff1a… ✅作者简介大家好我是Leo热爱Java后端开发者一个想要与大家共同进步的男人 个人主页Leo的博客 当前专栏每天一个知识点 ✨特色专栏 MySQL学习 本文内容Java泛型机制 ️个人小站 个人博客欢迎大家访问 个人知识库 知识库欢迎大家访问 1. 为什么会有泛型 泛型的本质是为了参数化类型在不创建新的类型的情况下通过泛型指定的不同类型来控制形参具体限制的类型。也就是说在泛型使用过程中操作的数据类型被指定为一个参数这种参数类型可以用在类、接口和方法中分别被称为泛型类、泛型接口、泛型方法。 引入泛型的意义在于 适用于多种数据类型执行相同的代码 我们通过一个例子来阐述先看下下面的代码 泛型中的类型在使用时指定不需要强制类型转换类型安全编译器会检查类型 看下这个例子 private static int add(int a, int b) {System.out.println(a b (a b));return a b;}private static float add(float a, float b) {System.out.println(a b (a b));return a b;}private static double add(double a, double b) {System.out.println(a b (a b));return a b;}如果没有泛型要实现不同类型的加法每种类型都需要重载一个add方法通过泛型我们可以复用为一个方法 private static T extends Number double add(T a, T b) {System.out.println(a b (a.doubleValue() b.doubleValue()));return a.doubleValue() b.doubleValue(); }List list new ArrayList(); list.add(Leo); list.add(100d); list.add(new Person());我们在使用上述list中list中的元素都是Object类型无法约束其中的类型所以在取出集合元素时需要人为的强制类型转化到具体的目标类型且很容易出现java.lang.ClassCastException异常。 引入泛型它将提供类型的约束提供编译前的检查 ListString list new ArrayListString();// list中只能放String, 不能放其它类型的元素如上代码所示在没有泛型之前类型的检查和类型的强转都必须由我们程序员自己负责一旦我们犯了错谁还能不犯错就是一个运行时崩溃等着我们。那时候我们就会抱怨了***编译器毛也检查不出来我把一个Integer 类型的对象强行转换成String类型你在编译的时候也不告诉我害的我程序运行时崩溃了这个月奖金没了 2. 泛型的作用对象 2.1 泛型集合 泛型本质上是提供类型的“类型参数”也就是参数化类型。我们可以为类、接口或方法指定一个类型参数通过这个参数限制操作的数据类型从而保证类型转换的绝对安全。 例 1 下面将结合泛型与集合编写一个案例实现图书信息输出。 1首先需要创建一个表示图书的实体类 Book其中包括的图书信息有图书编号、图书名称和价格。Book 类的具体代码如下 package com.Leo.generics;/*** author : Leo* version 1.0* date 2023/8/23 22:22* description : Book*/ public class Book {private int Id; // 图书编号private String Name; // 图书名称private int Price; // 图书价格public Book(int id, String name, int price) { // 构造方法this.Id id;this.Name name;this.Price price;}public String toString() { // 重写 toString()方法return this.Id , this.Name this.Price;} } 2使用 Book 作为类型创建 Map 和 List 两个泛型集合然后向集合中添加图书元素最后输出集合中的内容。具体代码如下 package com.Leo.generics;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/*** author : Leo* version 1.0* date 2023/8/23 22:22* description :*/ public class Demo2 {public static void main(String[] args) {// 创建3个Book对象Book book1 new Book(1, 灰姑娘, 8);Book book2 new Book(2, 大猩猩, 12);Book book3 new Book(3, 童话故事, 22);// 定义泛型 Map 集合MapInteger, Book books new HashMap();// 将第一个 Book 对象存储到 Map 中books.put(1001, book1);// 将第二个 Book 对象存储到 Map 中books.put(1002, book2);// 将第三个 Book 对象存储到 Map 中books.put(1003, book3);System.out.println(泛型Map存储的图书信息如下:);for (Integer id : books.keySet()) {// 遍历键System.out.print(id ——);// 不需要类型转换System.out.println(books.get(id));}// 定义泛型的 List 集合ListBook bookList new ArrayList();bookList.add(book1);bookList.add(book2);bookList.add(book3);System.out.println(泛型List存储的图书信息如下:);for (int i 0; i bookList.size(); i) {// 这里不需要类型转换System.out.println(bookList.get(i));}}} 在该示例中第 21行代码创建了一个键类型为 Integer、值类型为 Book 的泛型集合即指明了该 Map 集合中存放的键必须是 Integer 类型、值必须为 Book 类型否则编译出错。在获取 Map 集合中的元素时不需要将books.get(id);获取的值强制转换为 Book 类型程序会隐式转换。在创建 List 集合时同样使用了泛型因此在获取集合中的元素时也不需要将bookList.get(i)代码强制转换为 Book 类型程序会隐式转换。 执行结果如下 2.2 泛型类 除了可以定义泛型集合之外还可以直接限定泛型类的类型参数。语法格式如下 public class class_namedata_type1,data_type2,…{}其中class_name 表示类的名称data_ type1 等表示类型参数。Java 泛型支持声明一个以上的类型参数只需要将类型用逗号隔开即可。 泛型类一般用于类中的属性类型不确定的情况下。在声明属性时使用下面的语句 private data_type1 property_name1;private data_type2 property_name2;该语句中的 data_type1 与类声明中的 data_type1 表示的是同一种数据类型。 在实例化泛型类时需要指明泛型类中的类型参数并赋予泛型类属性相应类型的值。例如下面的示例代码创建了一个表示学生的泛型类该类中包括 3 个属性分别是姓名、年龄和性别。 package com.Leo.generics;public class StudentN, A, S {/** 姓名 */private N name;/** 年龄 */private A age;/** 性别 */private S sex;// 创建类的构造函数public Student(N name, A age, S sex) {this.name name;this.age age;this.sex sex;}/** 下面是上面3个属性的setter/getter方法*/public N getName() {return name;}public void setName(N name) {this.name name;}public A getAge() {return age;}public void setAge(A age) {this.age age;}public S getSex() {return sex;}public void setSex(S sex) {this.sex sex;} }接着创建测试类。在测试类中调用 Stu 类的构造方法实例化 Stu 对象并给该类中的 3 个属性赋予初始值最终需要输出学生信息。测试类的代码实现如下 package com.Leo.generics;/*** author : Leo* version 1.0* date 2023/8/23 22:33* description :*/ public class Demo03 {public static void main(String[] args) {StudentString, Integer, Character stu new Student(Leo, 22, 男);String name stu.getName();Integer age stu.getAge();Character sex stu.getSex();System.out.println(学生信息如下);System.out.println(学生姓名 name 年龄 age 性别 sex);} }运行结果 在该程序的 Student 类中定义了 3 个类型参数分别使用 N、A 和 S 来代替同时实现了这 3 个属性的 setter/getter 方法。在主类中调用 Stu 类的构造函数创建了 Student 类的对象同时指定 3 个类型参数分别为 String、Integer 和 Character。在获取学生姓名、年龄和性别时不需要类型转换程序隐式地将 Object 类型的数据转换为相应的数据类型。 注意 泛型的类型参数只能是类类型不能是简单类型。 不能对确切的泛型类型使用 instanceof 操作。如下面的操作是非法的编译时会出错。 2.3 泛型方法 在此之前我们所使用的泛型都是应用于整个类上。泛型同样可以在类中包含参数化的方法而方法所在的类可以是泛型类也可以不是泛型类。也就是说是否拥有泛型方法与其所在的类是不是泛型没有关系。 泛型方法使得该方法能够独立于类而产生变化。如果使用泛型方法可以取代类泛型化那么就应该只使用泛型方法。另外对一个 static 的方法而言无法访问泛型类的类型参数。因此如果 static 方法需要使用泛型能力就必须使其成为泛型方法。 自定义的标识符(T、V、E)来代表一个类型用 括住放在方法返回值前面。可以被用到形参声明、方法返回值、方法定义中的变量声明和类型转换。泛型方法使得该泛型方法的类型参数独立于类而产生变化。泛型方法和泛型类没有关系。泛型方法的类型参数一般情况下都是被推断inference出来。更具体地讲只能被形参或返回值推断出来当形参和返回值用了同一个类型参数时二者推断出来的类型必须一样、或者符合多态。形参的类型参数通过实参确定返回值的类型参数通过方法返回值赋值的对象确定。这也就是 类型参数推断 。当形参的类型参数和返回值的类型参数是同一个时优先使用形参的推断。因为返回值的类型参数的推断是一种拖延行为。类的成员方法可以使用定义泛型类的类型参数注意这种方法不是泛型方法只不过使用了类型参数而已而类的静态方法不可以使用泛型类的类型参数这是因为只有当创建泛型类对象时类型参数才会被具体类型确定也就是说泛型类的类型参数是与对象相关的。那么很自然地作为一个static方法肯定不可以使用泛型类的类型参数。 static方法想用到泛型只能将其定义为泛型方法。 定义泛型方法的语法格式如下 [访问权限修饰符] [static] [final] 类型参数列表 返回值类型 方法名([形式参数列表])例如 public static T List find(ClassT cs,int userId){}一般来说编写 Java 泛型方法其返回值类型至少有一个参数类型应该是泛型而且类型应该是一致的如果只有返回值类型或参数类型之一使用了泛型那么这个泛型方法的使用就被限制了。下面就来定义一个泛型方法具体介绍泛型方法的创建和使用。 public static T void List(T book) { // 定义泛型方法if (book ! null) {System.out.println(book);}}public static void main(String[] args) {Book stu new Book(1, Leo学Java, 28);List(stu);// 调用泛型方法}2.4 泛型数组 其实在很多文档中都有提到这个概念于是我翻阅了Sun文档经过查看Sun的说明文档在java中是**”不能创建一个确切的泛型类型的数组”**的。 也就是说下面的这个例子是不可以的 ListString[] ls new ArrayListString[10]; 而使用通配符创建泛型数组是可以的如下面这个例子 List?[] ls new ArrayList?[10]; 这样也是可以的 ListString[] ls new ArrayList[10];3. 泛型通配符 我们在定义泛型类泛型方法泛型接口的时候经常会碰见很多不同的通配符比如 TEKV 等等这些通配符又都是什么意思呢 1. 常用的 TEKV 本质上这些个都是通配符没啥区别只不过是编码时的一种约定俗成的东西。比如上述代码中的 T 我们可以换成 A-Z 之间的任何一个 字母都可以并不会影响程序的正常运行但是如果换成其他的字母代替 T 在可读性上可能会弱一些。通常情况下TEKV 是这样约定的 表示不确定的 java 类型T (type) 表示具体的一个java类型K V (key value) 分别代表java键值中的Key ValueE (element) 代表Element 2. 和 T 的区别 和 T 都表示不确定的类型区别在于我们可以对 T 进行操作但是对 不行比如如下这种 // 可以 T t operate();// 不可以car operate();简单总结下 T 是一个 确定的 类型通常用于泛型类和泛型方法的定义是一个 不确定 的类型通常用于泛型方法的调用代码和形参不能用于定义类和泛型方法。 4. 总结 本文零碎整理了下 JAVA 泛型中的一些点不是很全仅供参考。如果文中有不当的地方欢迎指正。
http://www.ho-use.cn/article/10821430.html

相关文章:

  • 网站备案时间会过期吗网站可以做哪些广告
  • 做网站常见的语言关键词设定在网站上
  • 江油移动网站建设微信网站页面设计
  • 大连开发区网站开发公司电话wordpress建站好么
  • 网站建设要注册哪些商标类别网站规划内容
  • 潘家园网站建设公司wordpress不能加人购物车
  • 建站公司外包中国建筑集团有限公司企业文化
  • 分销网站开发wordpress获取tag地址
  • 买软件网站建设太原网站设计开发公司
  • 网站前端切页面时间网站备案核验号
  • 律师事务所网站模板百度搜索引擎网址格式
  • 手机微信网站设计个人如何做免费网站
  • net网站是国际域名吗wordpress 分销插件
  • 大淘客网站建设wordpress 评论 顶踩 心 插件
  • 网页设计和网站开发哪个好怎样建立公司的网站
  • 宋祖儿在哪个网站做网红大学生个体创业的网站建设
  • 5118网站如何使用免费版可以做网络攻防的实验的网站
  • 赤峰网站策划网站快照查询
  • 广州白云网站建设网络科技公司经营范围有哪些
  • 网站开发技术问题免费推广网站都有哪些
  • 浙江金圣建设有限公司网站免费 网站源码
  • 内网网站建设汇报短视频运营培训学费多少
  • 宁波网站建设与推广方案苏州市住房和城乡建设局政务网站
  • 护卫神做的网站访问成全视频免费观看在线看第6季动漫
  • wordpress 微信登录插件下载失败廊坊关键词seo排名方案
  • phpcms v9网站地图深圳网站建设首选
  • 手表网站 二手西宁网站设计制作公司
  • 自己怎么做系统网站网店html模板
  • 如何登录网站服务器网站开发 名片
  • 桂林建设网站如何提升网站打开速度