`

java动态获得实例类型并创建实例

    博客分类:
  • Java
阅读更多

在java编程中经常遇到这样的问题

1、已经一个类的实例,判断这个实例是不是某个类的对象;

2、已知一个类的实例,想创建一个和此实例类型相同的对象,尤其当这个实例类型可能动态的时候。

 

介绍一个关键字和两个函数

instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例。

示例见newInstance;

 

getClass() Returns the runtime class of this Object.即返回一个实例运行时类型。

示例代码如下:

		String stringInstance = new String();
		Object objectInstance = stringInstance.getClass().newInstance(); 
		System.out.println(objectInstance.getClass().getName());
		Object objectInstance2 = new Object(); 
		System.out.println(objectInstance2.getClass().getName());

 

输出结果:

java.lang.String

java.lang.Object

参考:http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#getClass()

 

newInstance() Creates a new instance of the class represented by this Class object.穿件一个class的实例

代码如下:

		String stringInstance = new String();
		Object objectInstance = stringInstance.getClass().newInstance();  
		if (objectInstance instanceof Object)
			System.out.println("ob是一个Object实例");
		if (objectInstance instanceof String)
			System.out.println("ob是一个String实例");

 

输出结果:

 

ob是一个Object实例

ob是一个String实例

参考:

http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#newInstance()

 

至此以上两个问题都解决

分享到:
评论

相关推荐

    java动态代理实例

    Java动态代理是Java语言提供的一种在运行时创建代理对象的技术,它允许我们为已存在的接口创建代理类,以便在调用真实目标对象的方法时添加额外的功能或行为。在这个实例中,我们将深入探讨Java动态代理的核心概念,...

    JAVA3D官方实例

    JAVA3D官方实例对于初学者来说是一份宝贵的资源,它不仅能够帮助理解JAVA3D的基本概念,还能够通过实例演示如何在Eclipse这样的集成开发环境中实际操作。 首先,JAVA3D的核心在于其面向对象的编程模型,它允许...

    java调用动态库实例

    本实例主要讲解了如何通过Java调用动态库(DLL),特别是使用JNA(Java Native Access)和JNative两种不同的库来进行操作。下面我们将详细探讨这两个库以及它们在不同场景下的应用。 1. JNA(Java Native Access) ...

    java枚举实例代码

    Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...

    220个JAVA初学者实例

    11. **反射机制**:通过反射可以动态访问类的信息,创建对象,调用方法,改变字段值。 12. **集合框架**:深入理解List、Set、Queue等接口,以及它们的实现类,例如ArrayList、LinkedList、TreeSet、PriorityQueue...

    JAVA简单入门实例

    在编程世界中,Java是一种广泛使用的面向对象的编程语言,以其跨平台的特性、丰富的类库和高效性能而备受青睐。...建议初学者逐一运行这些实例,理解其工作原理,并尝试修改和扩展它们,以此加深对Java编程的理解。

    清华Java程序设计实例教程

    在实例中,可能有创建一个"Teacher"类,继承自"Person"类,这样"Teacher"就自动获得了"Person"的所有属性和方法。 3. 多态:多态性允许一个接口调用不同的实现,增加了代码的灵活性和可扩展性。比如,一个方法接受...

    Java项目开发实例

    总之,"Java项目开发实例"是一个宝贵的资源,它将理论知识与实践经验相结合,帮助开发者快速提升Java项目开发能力,理解并掌握实际项目中的常见问题和解决方案。通过仔细研究和实践这些源码,不仅可以巩固基础,还能...

    Java高级编程实例 100个

    本资源“Java高级编程实例 100个”提供了丰富的实践案例,旨在帮助初学者深入理解并熟练应用这些高级特性。 1. **多线程**:在Java中,多线程是并发执行任务的基本方式。学习如何创建Thread类的子类,使用Runnable...

    75个Java实例 实例下载

    "75个Java实例"提供了一系列的代码示例,旨在帮助初学者和有经验的开发者更好地理解和掌握Java语言的核心概念及实际应用。这些实例涵盖了从基础语法到高级特性的各种主题,包括但不限于: 1. **基础语法**:Java的...

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    Java实例化一个抽象类对象的方法教程

    总的来说,虽然Java中的抽象类不能直接实例化,但我们可以通过继承并实现其抽象方法,或者利用字节码工具和注解处理器在运行时或编译时动态生成新的类来间接达到实例化抽象类的目的。这样的设计允许我们创建更加灵活...

    java反射经典实例

    - 反射机制是在运行时分析类的能力,它允许我们获取类的信息(如类名、方法、属性等),甚至能够在运行时动态创建对象并调用其方法。 - 主要用途包括:动态加载类、处理未知类型的对象、实现元编程、插件系统、...

    java se 经典实例

    比如,一个实例可能教你如何创建一个文本文件,并将用户输入的数据写入其中。 Java集合框架是另一个关键主题,包括ArrayList、LinkedList、HashMap等数据结构。这些实例可以帮助你理解如何存储和操作数据集,以及...

    java入门与实例

    13. **反射机制**:Java的反射机制允许在运行时检查类的信息,创建和调用类的对象,这对于动态加载类和实现元编程非常有用。 14. **Java标准库**:Java SE(标准版)包含大量标准库,如`java.util`、`java.net`、`...

    selenium自动化测试 java实例

    在"**selenium java实例**"中,可能包含以下步骤: 1. **引入依赖**: 首先,我们需要在项目中引入Selenium的Java库,这通常通过Maven或Gradle的依赖管理完成。 2. **创建WebDriver对象**: 初始化一个WebDriver对象...

    java学习小实例

    Java是一种广泛使用的面向对象的编程语言,以...通过实践这些小实例,你可以逐步提高自己的编程技能,并对Java有更深入的理解。记得理论与实践相结合,遇到问题不要怕,多思考、多查资料,你会在Java的世界里不断进步。

    java上传下载实例

    在Struts2框架下,我们可以创建一个Action,设置返回结果类型为"stream",并在Action中提供文件流。 关于标签中的"java下载实例",这可能包含了如何处理二进制流,确保文件完整无损地传输给用户。在处理大文件时,...

    JAVA编程经典实例100个[源代码]

    标签包括“JAVA”、“JAVA作业”、“JAVA上机实例”、“JAVA经典实例”、“JAVA实例”,这表明这个压缩包的内容适用于Java学习者的各种需求,包括课堂作业、实践操作以及深入理解Java的经典案例。 从压缩包子文件的...

    220个java初学者实例源码

    Java支持多线程,你可以通过实例学习如何创建和管理线程,理解同步和互斥的概念,以及使用synchronized关键字和Lock接口。 总之,"220个Java初学者实例源码"提供了一个全面的学习平台,覆盖了Java编程的各个方面。...

Global site tag (gtag.js) - Google Analytics