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

最新文章

  1. selenium测试框架篇,页面对象和元素对象的管理
  2. sql编程篇 (五) 事务
  3. Android Stduio统计项目的代码行数
  4. My first Scratch small game
  5. Leetcode#106 Construct Binary Tree from Inorder and Postorder Traversal
  6. 构建高性能web站点--读书大纲
  7. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]PrI.6.1
  8. 关于JS中的this关键字
  9. ORA-00600 [kollasg:client-side tmp lob]
  10. java中的静态代理和动态代理,入门整理
  11. ext组件中的查询
  12. 阿里云安装MySQL5.7
  13. CH 3101 - 阶乘分解 - [埃筛]
  14. Flex布局新写法兼容写法详解
  15. quartz简单定时任务【可以处理完一个任务才开启下一个线程】【我】
  16. NioEventLoop(netty 4.1)
  17. SQL记录-PLSQL函数
  18. Why is IMAP better than POP?
  19. File处理
  20. libsvm svmtrain函数运行出错问题

热门文章

  1. 利用基准电压效正Vcc做参考电压的ADC采样计算方法
  2. Mysql:实现分组查询拼接未分组同一字段字符group_concat()
  3. CSS3自定义checkbox复选框
  4. qss 样式不生效--注释不能嵌套
  5. ping主机脚本
  6. 0927-转载:SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释
  7. Spring_事务准备
  8. 主机不能访问虚拟机web服务的问题
  9. PAT1036. Boys vs Girls (25)
  10. Spring Cloud 与 Spring boot - 转载