- 浏览: 1068477 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
最近自己做了一个项目。有一部分是通过不同的业务,调用相同一个类的不同方法产生XML文件。
我刚开始的想法就是简单的通过工厂方法,例如
if("a".equals(Type))
{
////a方法
}
if("b".equals(Type))
{
////b方法
}
由于项目中的类型越来越多造成难以维护。后来为了扩展的方便,采用放射的方式。
例如:
首先是一个接口
public interface XmlFactory {
public boolean createXml();
}
然后是他的两个实现类
public class DicBaseXml implements XmlFactory {
String name;
String path;
public DicBaseXml(String name,String path)
{
this.name = name;
this.path = path;
}
public boolean createXml() {
System.out.println(name+":"+path+":dicbase");
return false;
}
}
public class GroupXml implements XmlFactory {
String name;
String path;
public GroupXml(String name,String path)
{
this.name = name;
this.path = path;
}
public boolean createXml() {
System.out.println(name+":"+path+":group");
return false;
}
}
测试类
import java.lang.reflect.Constructor;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
String className = "GroupXml";
print(className);
}
public static void print(String className)
{
try {
Class clazz = Class.forName(className);
Constructor constructor = clazz.getConstructor(String.class,
String.class); // 构造函数参数列表的class类型
XmlFactory test = (XmlFactory) constructor.newInstance("boss","1.txt"); // 传参
System.out.println(test.createXml());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java语言反射提供一种动态链接程序组件的多功能方法。它允许程序创建和控制任何类的对象(根据安全性限制),无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。例如,反射经常在持续存储对象为数据库、XML或其它外部格式的框架中使用。Java reflection 非常有用,它使类和数据结构能按名称动态检索相关信息,并允许在运行着的程序中操作这些信息。Java 的这一特性非常强大,并且是其它一些常用语言,如 C、C++、Fortran 或者 Pascal 等都不具备的。
但反射有两个缺点。第一个是性能问题。用于字段和方法接入时反射要远慢于直接代码。性能问题的程度取决于程序中是如何使用反射的。如果它作为程序运行中相对很少涉及的部分,缓慢的性能将不会是一个问题。即使测试中最坏情况下的计时图显示的反射操作只耗用几微秒。仅反射在性能关键的应用的核心逻辑中使用时性能问题才变得至关重要。
(因为该部分并不实际参与系统的逻辑部分,所以我考虑使用反射来做)
许多应用中更严重的一个缺点是使用反射会模糊程序内部实际要发生的事情。程序人员希望在源代码中看到程序的逻辑,反射等绕过了源代码的技术会带来维护问题。反射代码比相应的直接代码更复杂,正如性能比较的代码实例中看到的一样。解决这些问题的最佳方案是保守地使用反射——仅在它可以真正增加灵活性的地方——记录其在目标类中的使用
发表评论
-
JVM调优总结
2019-07-10 17:14 371https://www.cnblogs.com/andy-zh ... -
JAVA RESULTSET 使用详解
2012-03-20 21:01 3157调用ResultSet中的last()方法时,提示: java ... -
JAVA采用JDBC执行批处理操作注意的问题
2012-03-20 20:50 1978让我们看看如何使用JDBC API在Java中执行批量插入。虽 ... -
java 各种加密算法详细比较
2012-03-15 11:07 2293本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密 ... -
java:大数据文件写入,读取,分割,排序,合并
2012-03-05 20:21 2034/** * 大数据排序合并 * * @param ar ... -
JAVA 连接池,方便在平时使用
2012-02-21 15:03 1032java连接池使用 -
Java动态代理实现
2012-02-28 09:19 1000Java动态代理实现 在目前的Java开发包中包含 ... -
Java Socket实战之五 使用加密协议传输对象
2012-02-16 13:49 1127本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之四 传输压缩对象
2012-02-16 13:48 1016转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之三 传输对象
2012-02-16 13:48 683转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之二 多线程通信
2012-02-16 13:47 1150本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之一 单线程通信
2012-02-16 13:46 1023转载:http://blog.csdn.net/kongx ... -
java5 新增线程池的使用
2012-02-09 09:26 1156package net.itdos.concurrent; ... -
P2P之UDP穿透NAT的原理与实现
2012-01-11 11:03 1252关键词: P2P UDP NAT 原理 穿透 Traveral ... -
火车票网上订票软件
2012-01-11 09:05 1911JAVA程序GOHOME自动抢票成功!非常棒~~~不多说,直接 ... -
java tcp/ip 通讯服务端和客户端
2011-12-15 08:20 1358java tcp/ip 通讯服务端和客户端 -
java 读取服务器上的某个文件,并解决UTF-8 BOM文件的问号问题
2011-11-28 15:16 1435JAVA读取UTF-8 BOM文件的时候会在文件头产生一个?号 ... -
JAVA 多线程学习笔记
2011-10-12 09:03 1071JAVA 多线程学习笔记 -
XBlink 1.0.0版发布,更轻、更快、更好用
2011-10-09 14:47 1314XBlink 1.0.0版发布,更轻、更快、更好用。 ... -
db4o 文件整理(收缩)
2011-09-29 22:26 1483一直都不敢大胆使用db4o,不是因为它不好用,不稳定,而 ...
相关推荐
### 利用反射实现类的动态加载 #### 反射技术简介 反射是Java语言提供的一种强大特性,允许运行时动态地获取类的信息并操纵类的对象。这种能力使得开发人员能够在编写程序时不确定具体类的情况下,依然能实现对类...
通过本示例,我们不仅理解了Java反射的基本概念和用途,还学会了如何利用反射动态加载并操作实例类。反射提供了一种灵活的方式来处理类和对象,尤其是在编写框架和插件系统时,能够根据运行时的条件动态地加载和执行...
在本例中,我们将讨论如何利用反射动态加载DLL文件,并结合SQL Server数据库来实现这一功能。 首先,我们需要理解动态加载DLL的基本概念。在传统的编程模式中,DLL(动态链接库)是在编译时静态链接到应用程序中的...
本篇将深入探讨如何利用反射动态加载和卸载DLL,以及在实际应用中的场景。 首先,我们需要了解DLL(动态链接库)在Windows操作系统中的作用。DLL文件是一组可重用的函数和数据,多个应用程序可以共享它们,以减少...
### C#中使用反射调用动态加载的DLL文件中的...通过以上步骤,我们不仅实现了反射的基本原理,还展示了如何利用反射技术动态地加载和调用DLL文件中的方法,这对于开发过程中需要灵活配置或扩展功能的应用来说非常有用。
在.NET框架中,C#程序员...通过以上解释,我们可以理解如何利用反射在C#中动态加载和执行DLL文件,以及在使用过程中需要注意的关键点。动态加载DLL是.NET开发中的一个重要技巧,它使得我们的应用程序更加灵活和可扩展。
本篇文章将深入探讨如何利用反射在C#中动态创建对象。 1. **反射基础** 反射是.NET框架提供的一种特性,通过System.Reflection命名空间中的类来实现。主要类包括Assembly(程序集)、Type(类型)、...
如果没有实现接口,就会选择使用CGLIB库生成字节码实现类的代理。 现在,我们来看看如何利用反射和代理实现一个简单的Spring: 1. **依赖注入**:首先,我们需要一个配置类,其中包含bean的定义。这些定义可以是...
在上述代码示例中,我们看到了如何利用反射来动态加载类并执行特定方法。以下是关于Java反射机制的详细解释以及代码分析: 1. **Java反射机制**:Java反射API包含在`java.lang.reflect`包中,主要类有`Class`、`...
利用反射,我们可以动态地创建对象,这意味着在代码执行时,我们能够实例化未知类型的对象,这在处理插件系统、动态加载用户界面组件或根据配置文件创建对象时非常有用。 标题中提到的"利用反射动态创建对象",主要...
1. 使用反射加载和实例化Action类。 2. 创建并实现Interceptor接口,利用反射实例化和执行拦截器链。 3. 设计并实现Dispatcher,用反射处理请求转发。 4. 解析配置文件,构建Action和拦截器的映射关系。 这样的实践...
在C#编程中,反射是一种强大的...总结来说,利用C#的Type和反射机制,我们可以动态创建类实例,进而实现一个动态的抽象工厂,适应不断变化的需求。这种结合使用的方法在处理不确定或扩展性需求较高的系统中非常有用。
### Java 利用反射获取内部类静态成员变量的值操作 #### 一、引言 在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用...
反射是指程序在运行时动态获取对象属性与方法的一种机制,即编译器需要将类型信息(属性类型与偏移地址以及成员函数的地址等信息)编译到程序文件中,当程序运行时将这些信息加载到内存中去,做到运行时只根据对象的...
在Java编程语言中,动态类加载机制是一种强大...通过自定义类加载器和利用反射API,我们可以实现更高级的功能,比如动态加载和执行类,或者在运行时修改对象的行为。这使得Java成为一个高度适应性和可扩展的编程语言。
动态加载则是利用反射技术,在程序运行时动态地加载类并实例化对象,这为Java应用程序提供了高度的灵活性和可扩展性。下面将深入探讨Java类的反射与动态加载相关知识点。 首先,我们要了解什么是类的反射。在Java中...
本篇主要探讨如何利用反射机制实现动态表单,这在处理不确定数据结构或需要动态生成UI的场景中非常有用。 动态表单的实现通常涉及到以下几个关键知识点: 1. **Class类**: Java中的`java.lang.Class`类是每个类的...
当一个Bean需要依赖其他Bean时,Spring会利用反射找到依赖的类并创建实例,然后通过代理机制,如AOP代理,来增强Bean的功能。 总结起来,Java的反射和代理机制在实现IOC模式中起到关键作用。反射用于在运行时解析和...
本实例代码主要探讨如何通过接口方式利用反射来动态加载DLL文件,这对于模块化开发和插件式架构非常有用。下面将详细介绍这个过程及其相关知识点。 首先,我们需要理解什么是接口。接口(Interface)在C#中是一种...