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泛型小记的更多相关文章

  1. Java:泛型小记

    Java:泛型小记 对 Java 中的 泛型类,做一个微不足道的小小小小记 泛型实现 概述 开篇: List<String> l1 = new ArrayList<String> ...

  2. Java泛型的历史

    为什么Java泛型会有当前的缺陷? 之前的章节里已经说明了Java泛型擦除会导致的问题,C++和C#的泛型都是在运行时存在的,难道Java天然不支持“真正的泛型”吗? 事实上,在Java1.5在200 ...

  3. 浅析Java 泛型

    泛型是JavaSE5引入的一个新概念,但是这个概念在编程语言中却是很普遍的一个概念.下面,根据以下内容,我们总结下在Java中使用泛型. 泛型使用的意义 什么是泛型 泛型类 泛型方法 泛型接口 泛型擦 ...

  4. Java:泛型基础

    泛型 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚很多! 解决这种限制的 ...

  5. java泛型基础

    泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 这种参数类型可以用在类.接口和方法的创建中, 分别称为泛型类.泛型接口.泛型方法.  Ja ...

  6. 使用java泛型设计通用方法

    泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 因此我们可以利用泛型和反射来设计一些通用方法. 现在有2张表, 一张user表和一张stu ...

  7. 关于Java泛型的使用

    在目前我遇到的java项目中,泛型应用的最多的就属集合了.当要从数据库取出多个对象或者说是多条记录时,往往都要使用集合,那么为什么这么使用,或者使用时有什么要注意的地方,请关注以下内容. 感谢Wind ...

  8. 初识java泛型

    1 协变数组类型(covariant array type) 数组的协变性: if A IS-A B then A[] IS-A B[] 也就是说,java中的数组兼容,一个类型的数组兼容他的子类类型 ...

  9. 【Java心得总结四】Java泛型下——万恶的擦除

    一.万恶的擦除 我在自己总结的[Java心得总结三]Java泛型上——初识泛型这篇博文中提到了Java中对泛型擦除的问题,考虑下面代码: import java.util.*; public clas ...

随机推荐

  1. FutureTask、Fork/Join、 BlockingQueue

    我们之前学习创建线程有Thread和Runnable两种方式,但是两种方式都无法获得执行的结果. 而Callable和Future在任务完成后得到结果.   Future是一个接口,表示一个任务的周期 ...

  2. 利用C#查看特定服务是否安装

    需求:想通过C#代码来查看IIS服务或者MSMQ是否已经安装 分析:IIS服务和MSMQ安装完成后都会创建windows服务,所以我们只需要查看对应的服务是否存在即可. 准备工作: IIS服务名称:W ...

  3. Zabbix Windos mysql 监控脚本

    说明:判断mysql主进程是否关闭,如果关闭则返回0 创建文件:MySQL-ping.vbs Set objFS = CreateObject("Scripting.FileSystemOb ...

  4. 20145201 实验二 Java面向对象程序设计

    20145201实验二 Java面向对象程序设计 初步掌握单元测试和TDD 实验步骤 (一)单元测试 (1) 三种代码 编程是智力活动,不是打字,编程前要把干什么.如何干想清楚才能把程序写对.写好.与 ...

  5. QT的基本数据类型

    QT的基本数据类型(转) qint8:signed char 有符号8比特数据 qint16:signed short 16位数据类型 qint32:signed int. 32位有符号数据类型 qi ...

  6. LeetCode——Word Break

    Question Given a string s and a dictionary of words dict, determine if s can be segmented into a spa ...

  7. Nginx配置端口访问的网站

    server { listen 80; #listen [::]:80 default_server ipv6only=on; server_name www.website.com; index i ...

  8. java socket - 传递对象

    Person类: package com.zhyea.olproxy.socket; import java.io.Serializable; public class Person implemen ...

  9. css tips —— 可见性对图片加载的影响

    如果是<img />标签,无论是display: none:还是visibility: hidden;都会加载图片: 但是如果是背景图片即background-image: url(xxx ...

  10. [Jquery 插件]活动倒计时,可同步服务器时间,倒计时格式随意设置

    活动倒计时,可同步服务器时间,倒计时格式随意设置 使用说明 /* #活动倒计时,可同步服务器时间 startTime:起始时间 endTime:结束时间 format_str:字符模板 speed:倒 ...