Java泛型小记
Automobile类:
public class Automobile {
private String name;
public Automobile(String name){
this.name= name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Holder1类:持有指定的单一类型对象。
public class Holder1 {
private Automobile automobile;
public Holder1(Automobile automobile){
this.automobile = automobile;
}
public Automobile get(){
return this.automobile;
}
}
Holder2类:持有Object对象。
public class Holder2 {
private Object object;
public Holder2(Object object){
this.setObject(object);
}
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
}
Holder3类:使用泛型,持有单一对象,但是暂时不指定其类型,到使用时决定持有何种对象。
public class Holder3 <T>{
private T t;
public Holder3(T t){
this.setT(t);
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
主程序Main:
public class Main {
public static void main(String[] args) {
/*使用Holder1*/
Holder1 holder1 = new Holder1(new Automobile("Iphone"));
System.out.println(holder1.get().getName()); /*使用Holder2*/
//使holder2持有String类型对象
Holder2 holder2 = new Holder2("XiaoMi");
System.out.println(holder2.getObject());
//更改holder2中持有的对象类型
holder2.setObject(new Automobile("HuaWei"));
//向下转型Object->Automobile
Automobile automobile = (Automobile) holder2.getObject();
System.out.println(automobile.getName()); /*使用Holder3*/
//告诉编译器holder3持有的对象类型为String
//此时holder3拥有的对象类型只能为String,不能变更
Holder3<String> holder3 = new Holder3<String>("Vivo");
System.out.println(holder3.getT());
//告诉编译器anotherHolder3持有的对象类型为Automobile
//此时anotherHolder3拥有的对象类型只能为Automobile,不能变更
Holder3<Automobile> anotherHolder3 = new Holder3<Automobile>(new Automobile("Oneplus"));
System.out.println(anotherHolder3.getT().getName());
}
}
程序运行结果为:
Iphone
XiaoMi
HuaWei
Vivo
Oneplus
Java泛型小记的更多相关文章
- Java:泛型小记
Java:泛型小记 对 Java 中的 泛型类,做一个微不足道的小小小小记 泛型实现 概述 开篇: List<String> l1 = new ArrayList<String> ...
- Java泛型的历史
为什么Java泛型会有当前的缺陷? 之前的章节里已经说明了Java泛型擦除会导致的问题,C++和C#的泛型都是在运行时存在的,难道Java天然不支持“真正的泛型”吗? 事实上,在Java1.5在200 ...
- 浅析Java 泛型
泛型是JavaSE5引入的一个新概念,但是这个概念在编程语言中却是很普遍的一个概念.下面,根据以下内容,我们总结下在Java中使用泛型. 泛型使用的意义 什么是泛型 泛型类 泛型方法 泛型接口 泛型擦 ...
- Java:泛型基础
泛型 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚很多! 解决这种限制的 ...
- java泛型基础
泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 这种参数类型可以用在类.接口和方法的创建中, 分别称为泛型类.泛型接口.泛型方法. Ja ...
- 使用java泛型设计通用方法
泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 因此我们可以利用泛型和反射来设计一些通用方法. 现在有2张表, 一张user表和一张stu ...
- 关于Java泛型的使用
在目前我遇到的java项目中,泛型应用的最多的就属集合了.当要从数据库取出多个对象或者说是多条记录时,往往都要使用集合,那么为什么这么使用,或者使用时有什么要注意的地方,请关注以下内容. 感谢Wind ...
- 初识java泛型
1 协变数组类型(covariant array type) 数组的协变性: if A IS-A B then A[] IS-A B[] 也就是说,java中的数组兼容,一个类型的数组兼容他的子类类型 ...
- 【Java心得总结四】Java泛型下——万恶的擦除
一.万恶的擦除 我在自己总结的[Java心得总结三]Java泛型上——初识泛型这篇博文中提到了Java中对泛型擦除的问题,考虑下面代码: import java.util.*; public clas ...
随机推荐
- Linux命令(6/28)——declare/typeset命令
declare 与 typeset 命令是bash的内建命令,两者是完全一样的,用来声明shell变量,设置变量的属性. declare命令(别名typeset)属shell内建命令,用于申明shel ...
- Spring 之定义切面尝试(基于 XML)
有些场景下只能基于 XML 来定义切面. [Spring 之定义切面尝试] 1.XML 下定义切面(首先是要有一个对应的类...显然要比基于注解的麻烦) <?xml version=" ...
- Java_Chapter6_类与对象
6.1 类与对象的概念 6.2 定义类 class Cylinder { double radius; int height; double pi; void setCylinder(double r ...
- 并查集 试水 hdu1232
#include <stdio.h> #include <stdlib.h> int n,m; ],rank[]; int count; int find(int x) { i ...
- QT的基本数据类型
QT的基本数据类型(转) qint8:signed char 有符号8比特数据 qint16:signed short 16位数据类型 qint32:signed int. 32位有符号数据类型 qi ...
- COS-4进程及进程管理
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口.操作系统的功能包括管理计算机系统的硬件.软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限 ...
- WIN10 安装Docker MySQL Ubuntu
1) 必须专业版, 要开启 Hyper-V 2)下载安装包: 链接:https://pan.baidu.com/s/1APqcq2glvwzsCHlwRnPXkA 密码:wpej 3)安装时不要勾 ...
- 修改Maven源为阿里巴巴的镜像
在C:\Users\Administrator\.m2创建setting.xml文件,内容如下 <settings xmlns="http://maven.apache.org/SET ...
- java中Hashtable集合的常用方法
实现Map集合的方法这里就不在讲了 https://www.cnblogs.com/xiaostudy/p/9510763.html public Object clone() 返回Hashtable ...
- 导出成可运行jar包时所遇问题的解决办法 - 转载
Could not find main method from given launch configuration 当我把我的Java工程导出为可运行的jar包时,遇到了“Could not fin ...