隐式和显示的创建类型实例

上传人:第*** 文档编号:33610792 上传时间:2018-02-16 格式:DOC 页数:4 大小:149KB
返回 下载 相关 举报
隐式和显示的创建类型实例_第1页
第1页 / 共4页
隐式和显示的创建类型实例_第2页
第2页 / 共4页
隐式和显示的创建类型实例_第3页
第3页 / 共4页
隐式和显示的创建类型实例_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《隐式和显示的创建类型实例》由会员分享,可在线阅读,更多相关《隐式和显示的创建类型实例(4页珍藏版)》请在金锄头文库上搜索。

1、隐式和显示的创建类型实例。1.隐式建类型实例我们上一章节提到下面有问题的代码:?123456789101112package com.ray.ch11;public class Test public void test(Object object)/ System.out.println(object instanceof T);/error/ System.out.println(new T();/error/ System.out.println(new T10);/errorSystem.out.println(T)object );/waring解决的方法就是下面的代码:?12345

2、678910111213141516171819202122package com.ray.ch11;import java.lang.reflect.Array;public class Test private Class kind;public Test(Class t) kind = t;public void test(Object object) System.out.println(kind.isInstance(object);try System.out.println(kind.newInstance(); catch (InstantiationException e)

3、e.printStackTrace(); catch (IllegalAccessException e) e.printStackTrace();System.out.println(Array.newInstance(kind, 10);System.out.println(T) object);/ waring232425但是,表面上没有太大的问题,因为我们是基于这个类有默认的构造器,我们来看看下面的代码:?123456789101112131415161718192021222324package com.ray.ch11;public class Test private Class

4、 kind;public Test(Class t) kind = t;public void test() try System.out.println(kind.newInstance(); catch (InstantiationException e) e.printStackTrace(); catch (IllegalAccessException e) e.printStackTrace();public static void main(String args) new Test(Integer.class).test();输出:java.lang.InstantiationE

5、xception: java.lang.Integerat java.lang.Class.newInstance0(Class.java:340)at java.lang.Class.newInstance(Class.java:308)at com.ray.ch11.Test.test(Test.java:12)at com.ray.ch11.Test.main(Test.java:21)我们减少了一些代码,但是主体还留着,然后我们在里面放上 Integer 这个类,我们可以从输出那里看见,直接报错,原因是 Integer 没有默认的构造函数。由于上面出现的问题,因此我们推荐下面显示创建类

6、型对象的方式。2.显示的创建类型实例(1)利用工厂对象来约束实现?1234567891011121314151617181920package com.ray.ch11;public class Test public static void main(String args) new IntegerFactory().create();interface IFactory T create();class IntegerFactory implements IFactory Overridepublic Integer create() return new Integer(0);(2)通过

7、模版方法设计模式来约束实现?123456789package com.ray.ch11;public class Test public static void main(String args) new IntegerFactory().show();10111213141516171819202122232425262728293031abstract class AFactory public final T obj;public AFactory() obj = create();abstract public T create();class IntegerFactory extends AFactory Overridepublic Integer create() return new Integer(0);public void show() System.out.println(obj.getClass().getName();总结:这一章节主要讲述隐式创建类型实例隐含的问题,以及怎样通过 显示创建类型实例的解决方案。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号