- 浏览: 98708 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
囧男孩子:
ink:
flex -
囧男孩子:
flex -
okhaoba:
谢谢分享。
Java混淆器jocky -
huanglei7211:
资源不错,先学习下;后续在和楼主交流
jbpm -
yudm:
很不错,多谢。
jbpm
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;
/**
* 该类的功能:通过反射获取类的实例
*
*/
public class ClassLoaderFactory {
public ClassLoaderFactory() {
super();
}
/**
* 功能:通过一般方法(有参数)获取实例(私有构造方法--单例)
*
* @param methodName:方法名
* @param className:类名
* @param pro:参数值
* @return
*/
public static Object loadClassByMethod(String methodName, String className,
Properties pro) {
Class c = null;
try {
c = Class.forName(className);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Method method = null;
try {
method = c.getMethod(methodName, new Class[] { Properties.class });// 方法参数的类型为:Properties
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Object o = null;
try {
// o=method.invoke(c,null);
o = method.invoke(c, new Object[] { pro });// 方法参数的值为:pro
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return o;
}
/**
* 功能:通过一般方法(无参数)获取实例(私有构造方法--单例)
*
* @param methodName:方法名
* @param className:类名
* @return
*/
public static Object loadClassByMethod(String methodName, String className) {
Class c = null;
try {
c = Class.forName(className);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Method method = null;
try {
method = c.getMethod(methodName, new Class[] { });
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Object o = null;
try {
//o=method.invoke(c,null);
o=method.invoke(c,new Object[] { });
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return o;
}
/**
* 功能:通过构造方法获取实例(有参数的构造方法)
*
* @param className:类名
* @param pro:参数值
* @return
*/
//public static Object loadClassByConstructor(String className, Properties pro) {
public static Object loadClassByConstructor(String className, String beanId) {
Class c = null;
try {
//c = Class.forName(pro.getProperty(className));
c = Class.forName(className);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Constructor ct = null;
try {
//ct = c.getConstructor(new Class[] { Properties.class });// 构造方法的参数类型为:Properties
ct = c.getConstructor(new Class[] { String.class });
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Object o = null;
try {
//o = ct.newInstance(new Object[] { pro });// 构造方法的参数值为:Properties
o = ct.newInstance(new Object[] { beanId });
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return o;
}
/**
* 功能:通过空构造方法获取实例
*
* @param className
* @return
*/
public static Object loadClass(String className) {
Class c = null;
try {
c = Class.forName(className);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Object o = null;
try {
o = c.newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return o;
}
}
- ClassLoaderFactory.rar (1014 Bytes)
- 下载次数: 6
发表评论
-
通配符比较
2009-04-30 14:01 57//支持通配符匹配,如:*.jar private boo ... -
javamail例子
2009-04-03 10:08 1087163新注册用户不支持pop3 依赖的jar包:mail.ja ... -
代理的应用
2009-02-23 22:15 975import java.lang.reflect.Invoc ... -
cglib使用
2009-02-23 22:10 1173import java.lang.reflect.Metho ... -
多数据源应用
2009-02-23 22:02 72多数据源应用 -
解析配置文件
2009-02-23 21:47 93通过jdk接口解析配置文件 -
数据库操作终端
2009-02-22 00:58 893数据库操作终端(简单模拟Sql*plus平台功能) -
读写大字段内容到数据库
2009-02-22 00:54 306import java.io.BufferedOutputS ... -
控制台分页
2009-02-22 00:40 746控制台分页 -
applet与script交互应用
2009-02-22 00:31 1520import java.applet.Applet; //j ... -
rmi使用
2009-02-21 16:23 85import java.rmi.Naming; public ... -
jndi使用实例
2009-02-21 16:19 873import javax.naming.*; import j ... -
this引用实现方法级连调用
2009-02-21 16:05 62/** * this引用实现方法级连调用 */ class T ... -
九九乘法口诀
2009-02-21 16:03 992public class Test { public sta ... -
使用二个线程共同合作绘制一个实体三角
2009-02-21 15:47 780/** * <p> * Title: 线程间合 ... -
使用内部类实现线程
2009-02-21 15:39 917/** * 设计4个线程,其中两个线程每次对j增加1,另外两 ... -
使用管道流传输数据
2009-02-21 15:33 1006import java.io.IOException; imp ... -
目录操作
2009-02-21 15:12 799/** * <p>Title: 目录操作< ... -
IO标准输入输出
2009-02-21 14:13 1038import java.io.BufferedReader; ... -
文件上传
2009-02-17 15:29 208服务器代码:接收客户端上传过来的文件 public Strin ...
相关推荐
1. **获取枚举类**:要通过反射获取枚举类,首先需要得到其Class对象。这可以通过`Class.forName()`方法完成,提供枚举类的全限定名作为参数。 ```java Class<Color> colorClass = (Class) Class.forName(...
本示例"通过反射获取Context实例的Demo"将展示如何在没有直接Context引用的情况下,通过反射来获取Context。 首先,我们需要了解反射的基本概念。反射是Java提供的一种能够在运行时检查类、接口、字段和方法的能力...
本文将深入探讨如何通过反射获取`Context`的实例,并展示如何利用反射实现一个集成`Toast`的工具类。这在某些场景下非常有用,比如当我们需要在没有直接访问`Context`的情况下显示`Toast`消息。 首先,让我们了解`...
综上所述,通过类名获取类的实例对象在C++中是一种动态类型操作,可能涉及到反射机制的实现、注册-查找表、线程安全、消息传递等多种技术。虽然C++标准库不直接提供这些功能,但我们可以通过宏、模板元编程、RTTI...
在深入探讨如何通过反射获取实体类的字段和值之前,我们先来理解一下反射是什么以及它在.NET框架中的作用。反射是一种强大的编程技术,允许运行时动态地获取类型的信息并操作对象。它提供了对程序集、模块、类型、...
#### 反射获取类实例的步骤 要根据类的完全限定名获取其实例,我们需要遵循以下步骤: 1. **加载类**:首先,我们需要使用`Class.forName()`或`ClassLoader.loadClass()`方法来加载指定的类。 2. **创建实例**: ...
### C#反射创建类的实例 #### 反射概述 反射是.NET框架提供的一种强大机制,允许程序在运行时检查自身以及其他程序集的信息,并能够创建和操作这些类型。这一特性使得开发人员能够在运行时动态地生成和执行代码,极...
使用反射获取需要创建的类型,并通过Type对象调用`Activator.CreateInstance()`创建实例。 c. 将这个实例返回给调用者,调用者无需知道实际创建的是哪个类型的对象。 4. 示例: 假设有一个接口`IProduct`和多个...
#### 二、反射获取类中的属性及值 下面,我们将通过具体的代码示例来展示如何使用反射来获取类中的所有属性及其对应的值。 ##### 1. 获取类的信息 首先,我们需要获取目标类的信息。这里使用`getClass()`方法来...
本实例将探讨如何在C++中通过类工厂(Class Factory)动态创建对象实例,实现一种简单的反射机制。 首先,`CppReflection.cpp` 文件可能包含了反射的实现主体。在这个文件中,可能会定义一个类或一系列函数,用于...
接下来,我们将通过一个具体的例子来演示如何使用Java反射获取内部类的静态成员变量的值。 ##### 示例代码分析 假设我们有如下的类结构: ```java public class Goods { static class Apple { // 内部类 public ...
在本篇文章中,我们将深入探讨如何通过反射获取构造方法并实例化对象,这对于理解和使用Java的动态性至关重要。 首先,我们需要了解`java.lang.Class`类,它是Java中所有类的通用表示。当我们知道一个类的名字...
这个例子展示了如何使用反射创建一个类的实例,设置和获取属性值,以及调用方法。尽管反射功能强大,但也有一些注意事项: - **性能**:反射通常比直接的代码执行慢,因为它涉及到运行时查找和调用。在性能敏感的...
1. **类的动态操作**:你可以通过反射获取类的信息,例如类名、父类、接口以及类的构造函数。这在处理未知类型或者需要动态创建对象的场景下非常有用。 2. **属性访问**:在运行时,反射可以让你读取或修改对象的...
通过上述实例,我们可以看到Java反射机制在许多实际场景中的应用,它扩展了Java代码的灵活性和可扩展性。然而,也应注意,过度使用反射可能会引入复杂性和潜在的安全风险,因此在设计和实现时需权衡利弊。在理解了...
2. **获取类信息**: 通过`Class`对象,我们可以获取类的各种属性。例如,`getConstructors()`返回类的所有公共构造器,`getDeclaredConstructors()`则返回包括私有构造器在内的所有构造器。`getMethods()`和`...
通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法
通过上述实例我们可以看到,C#反射技术为开发者提供了极大的灵活性,但也需要注意性能问题,因为反射操作通常比直接的类型操作要慢。因此,在使用反射时需要权衡其利弊,合理运用这一强大工具。
- `Class`类代表运行时的类信息,可以通过`Class.forName()`或对象的`getClass()`方法获取。 - `Constructor`表示类的构造器,可以用来创建类的新实例。 - `Method`代表类的方法,允许动态调用。 - `Field`代表...