泛型新手心得

news/2024/7/8 4:56:37

泛型
是JDK1.5版本后出现的新特性,是一个类型安全机制。
优势
1.将运行时出现的ClassCastException转移到编译时期,方便程序员解决问题,让运行时问题减少,更安全。
2.避免了强制转换的麻烦。

  ArraryList<String> al = new ArraryList<String>();

泛型类
什么时候定义泛型类?
当类中操作的引用类型不确定的时候
早期定义Object来完成拓展。现在定义泛型来完成拓展。

泛型方法
写一个泛型方法,改方法在调用时可以接收到不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。

在泛型之前,用类的多态来完成拓展————获取值的时候必须进行强制类型转换。并且非预期类型可能不会被阻止引用对象指向的内存空间,且不会报错,但是在运行时会报错。

使用泛型

   ArraryList<String>   Stringvalues = new  ArraryList<String>();

使用泛型的话,一看就知道该集合用来保存String类型的对象,而不是仅仅依靠命名来暗示我们期望的类型。

** 泛型消除**

ArraryList<String>   Stringvalues = new  ArraryList<String>();
ArraryList<Interger>   Intergervalues = new ArraryyList<Interger>();
System.out.println(Stringvalues.getClass()==Intergervalues.getClass());

结果
true
在编译期间,所有的泛型都会被擦除,ArraryList、ArraryList都会变成List类型(原始类型)。


http://www.niftyadmin.cn/n/2434438.html

相关文章

python小游戏(剪刀石头布)

#!/usr/bin/python#-- coding: utf8--import random #导入随机数的模块 computer random.choice([石头, 剪刀, 布])player raw_input(请出拳(石头/剪刀/布): ) print "Your choice: %s, Computers choice: %s" % (player, computer)if player 石头:if computer 石…

java反射(2)——属性的操作

java反射 之前的博客java反射讲了有关java反射的基础知识&#xff1a;什么是java发射&#xff0c;如何获取Class对象&#xff0c;如何获取到Class对象的属性、方法和构造方法等。 今天的博客主要有关如何操作属性、方法、构造方法 我们直接进入主题&#xff1a;要想操作一个类…

Android NDK开发之旅11 JNI JNI数据类型与方法属性访问

###JNI数据类型 #####JNI的数据类型包含两种: 基本类型和引用类型 ####基本类型 基本类型主要有jboolean, jchar, jint等, 它们和Java中的数据类型对应关系如下表所示: Java类型JNI类型描述booleanjboolean无符号8位整型bytebyte无符号8位整型charjchar无符号16位整型shortjsho…

装饰设计模式详解

装饰设计模式 模式定义和动机 装饰模式可以在不改变一个对象本身的基础上给对象增加额外的新行为&#xff08;方法&#xff09;&#xff0c;在实现生活中的例子有很多&#xff0c;买了毛坯房需要装修&#xff0c;我们每个人对毛坯房的新装修&#xff08;新功能&#xff09;可能…

转载 React.createClass 对决 extends React.Component

先给出结论&#xff0c;这其实是殊途同归的两种方式。过去我们一般都会使用 React.createClass 方法来创建组件&#xff0c;但基于 ES6 的小小语法糖&#xff0c;我们还可以通过 extends React.Component 来创建组件。 这两种创建方式之间的差别很小&#xff0c;但只有了解这些…

java反射(3)——方法、构造方法操作

之前的博客中已经总结了如何对属性进行操作&#xff0c;今天的博客主要总结反射是如何操作方法和构造方法的 今天的博客是有关于如何获得、使用类中的方法和构造方法。 直接上代码&#xff1a; 我们写一个Person类&#xff0c;写一些方法和构造方法还写了一个普通的方法&#…

重载(overload)和重写(override)的区别(详细)

overload指的是方法重载 override指的是方法重写 画了一个很简单的UML类图给大家解释一下重写和重载 package overloadAndoverride;public class Person {private int age;private String name ;public void eat() {System.out.println("人类的吃饭方法");} }packa…

2018年第三周-计算机概论-操作系统篇-历史章节

后人总是站在前人的肩膀上远眺&#xff0c;人类才得以智慧和进步。我们&#xff08;码农&#xff09;写&#xff08;复&#xff09;的&#xff08;制&#xff09;业务代码&#xff0c;其实就是调用操作系统所提供的接口&#xff0c;来完成一定的需求。也或许连操作系统层面都没…