`
zhangsk
  • 浏览: 31189 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

java反射机制2 -- 通过名称创建类,并通过该类创建实例

阅读更多
这几天一直在找java中是如何实现delphi中使用元类统一管理实例创建并通过统一接口操作的方法.
java反射机制就是用来解决这一系列问题的,平且java中还有spring框架的Ioc帮助你完成这个功能.
首先看一下java是如何通过字符串创建一个类;为了简单省略了字符串与java类对应的方法,
Class c = null;
c = Class.forName("com.zsk.reflection.UserReflection");

有了这个类我们如何创建实例呢?
Object o = c.newInstance();

找到了方法这些东西都是很简单的.
一般的方法都是通过父类或者接口来操作这个o对象.
如果你在多想想,这几行代码的思路可以做出很强大支撑库.
简单的代码如下:
package com.zsk.reflection;

public class UserReflection {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Class c = null;
		try {
			c = Class.forName("com.zsk.reflection.UserReflection");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
//			e.printStackTrace();
			System.err.println("Class not found.");
			System.exit(1);
		}
		
		try {
			Object o = c.newInstance();
			System.out.println(o.toString());
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
//			e.printStackTrace();
			System.err.println("Class not accessible.");
			System.exit(1);
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
//			e.printStackTrace();
			System.err.println("Class not instantiable.");
			System.exit(1);
		}
		
		

	}

}


前文还说了spring的Ioc,我是刚接触java又很多东西都是从Delphi方面理解过来的.错误的地方还请大家指正.
我想要做的功能spring已经帮我实现了,我做了一个Demo如下:

package com.zsk.springtest;

public interface IFruit {
	public void grow(String msg);
}


package com.zsk.springtest;

public class Apple implements IFruit {

	public void grow(String msg) {
		// TODO Auto-generated method stub
		System.out.println("苹果生长---" + msg);
	}

}


package com.zsk.springtest;

public class Grape implements IFruit {

	public void grow(String msg) {
		// TODO Auto-generated method stub
		System.out.println("葡萄生长---" + msg);
	}
}


package com.zsk.springtest;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestFruit {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ApplicationContext context = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		IFruit fruit = (IFruit) context.getBean("fruitId");
		fruit.grow("长的不错吗^_^");
		
	}

}



<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

 
	<bean id="fruitId" class="com.zsk.springtest.Grape" abstract="false"
		lazy-init="default" autowire="default" dependency-check="default">
	</bean>
	<!--
	<bean id="fruitId" class="com.zsk.springtest.Apple" abstract="false"
		lazy-init="default" autowire="default" dependency-check="default">
	</bean>
	 -->
	</beans>

这就实现了用过一个字符串创建一个类,并同过统一的接口进行操作.
可以修改一下xml文件看看效果
  • MySpring2.rar (5 KB)
  • 描述: 开发工具Eclipse+MyEclipse
  • 下载次数: 30
分享到:
评论

相关推荐

    反射实例-JAVA反射机制

    ### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...

    java 反射实例,大量注释,简单易懂

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够在运行时创建和访问这些类的对象。在Java中,反射提供了对类对象的元数据(metadata)的访问,使得我们可以...

    JAVA反射机制的入门代码

    总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...

    Java反射机制 Java反射机制

    Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用类的方法等。通过反射,程序可以动态地创建对象和调用其方法,从而实现更灵活的功能。 #### 二、Java反射机制的由来与发展 Java反射机制...

    java-反射机制-源码

    Java反射机制是Java编程语言中的一个强大工具,它允许运行时动态访问类的信息,包括类名、属性、方法以及构造器等。通过反射,我们可以在程序执行过程中创建和操作任何类的对象,即使在编译时未知其具体类型。这种...

    JAVA反射机制-Class类-Class对象的获取.pdf

    ### JAVA反射机制——Class类与Class对象的获取 #### 概述 在Java语言中,反射是一种强大的功能,允许程序在运行时动态地检查和修改自身的行为。这种能力是通过`java.lang.Class`类实现的,它提供了封装类或接口...

    java反射经典实例

    通过上述实例,我们可以看到Java反射机制在许多实际场景中的应用,它扩展了Java代码的灵活性和可扩展性。然而,也应注意,过度使用反射可能会引入复杂性和潜在的安全风险,因此在设计和实现时需权衡利弊。在理解了...

    Java反射动态加载实例类

    本文将深入探讨Java反射机制,并通过一个具体的示例来演示如何使用反射动态加载实例类。 #### 一、Java反射概述 Java反射API主要由以下类和接口组成: - `java.lang.Class`:表示一个类或接口的信息。 - `java....

    java 反射机制详解

    然后,`newInstance()` 方法用来创建该类的新实例。接着,通过 `getMethod()` 获取指定的设置字段的方法(在这里是 `setName`),并传入参数类型来指定方法签名。最后,`invoke()` 方法被用来执行这个方法,将参数值...

    Java反射机制总结

    在这个示例中,程序接收命令行参数作为类名,然后使用`Class.forName()`方法加载该类,并获取它的所有声明的方法。接着遍历这些方法并输出每个方法的名字。 #### Java反射的限制与注意事项 虽然Java反射机制提供了...

    java反射机制实例

    这个实例将深入探讨Java反射机制的使用,通过具体代码示例来阐述其工作原理和应用。 在Java中,反射机制主要用于在运行时获取类的信息,包括类名、方法名、参数类型等,并且可以动态调用对象的方法或访问对象的属性...

    java反射实例代码

    在提供的"java反射实例代码"中,应该包含了如何使用上述方法的实际示例,这些示例有助于加深对Java反射机制的理解。通过阅读和运行这些代码,开发者可以更直观地学习如何在程序运行时动态地操作类、方法和字段,从而...

    JAVA反射机制详解

    Java反射机制是Java语言提供的一种基础功能,通过反射...总的来说,Java反射机制为Java程序提供了高度的灵活性和动态性,在需要动态创建类实例、访问或修改对象属性以及调用方法的场合,反射机制是一个非常有力的工具。

    Java反射机制学习(二)

    在"Java反射机制学习(二)"这篇博文中,作者可能详细解释了以上这些概念,并通过`BaseTest.java`和`Student.java`这两个示例文件进行了实例演示。`BaseTest.java`可能包含了一组基础的反射操作,而`Student.java`...

    java反射机制应用

    Java反射机制是Java语言提供的一种能在运行时分析类信息并动态操作对象的功能。通过反射,我们可以在程序运行期间获取类的信息(如类名、方法名等),创建对象,调用方法等。这为Java程序带来了极大的灵活性和扩展性...

    Java反射经典实例

    Java反射机制允许我们动态地获取类的信息,并在运行时创建和调用对象的方法。这种能力使得Java具有高度的灵活性和动态性,特别是在处理跨版本兼容性、元数据操作以及插件系统等方面。 二、反射的基本使用 1. 获取...

    java 反射机制

    - **`Class`实例的生成**:当JVM加载一个类时,会创建一个唯一的`Class`实例来表示该类。这个实例包含了关于该类的所有信息,如类名、超级类、实现的接口、字段、方法等。 - **`Class`实例的获取**:可以通过多种...

    北大青鸟java反射机制

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。在"北大青鸟java反射机制"的学习资料中,我们将会深入探讨这一核心特性。 首先,我们要理解反射的核心概念...

    java 反射入门-属性方法调用实例

    例如,使用`Class.forName()`方法可以获取到任何类的`Class`对象,然后通过这个对象来访问和操作该类的信息。 ```java try { Class&lt;?&gt; clazz = Class.forName("com.example.MyClass"); } catch ...

Global site tag (gtag.js) - Google Analytics