- 浏览: 288217 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yhxf_ie:
网上都是这个方法 改了之后仍然无效啊! 真急人
让Gradle支持中文 -- 关于 "编码 GBK 的不可映射字符"错误的解决 -
smart152819:
夜行侠老师gradle教学视频地址:http://www.it ...
Gradle笔记 -
laorer:
gradle init --type pom
MAVEN项目秒变Gradle项目 -
sulpha:
Gradle 2.0以上,需要把Compile改为JavaCo ...
让Gradle支持中文 -- 关于 "编码 GBK 的不可映射字符"错误的解决 -
marshan:
默认情况下都报错 没有setupBuild这个task 楼主提 ...
MAVEN项目秒变Gradle项目
mercyblitz 写道
ouchxp 写道
再就是在执行反射之前执行field.setAccessible(true); 也可以提高JDK反射效率
这样可以提高效率?这个方法仅仅设置访问标识,让不能访问的成员可以访问。
keating 写道
ouchxp 写道
再就是在执行反射之前执行field.setAccessible(true); 也可以提高JDK反射效率
正如楼上mercyblitz所说,如private变量...
在此澄清一下对于setAccessable的误解
先看一个例子
Java代码
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Main { public static void main(String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { Method m = A.class.getDeclaredMethod("getName", new Class[]{}); System.out.println(m.isAccessible()); //getName是public的,猜猜输出是true还是false A a = new A(); a.setName("Mr Lee"); long start = System.currentTimeMillis(); for(int i=0;i<10000000;i++){ m.invoke(a, new Object[]{}); } System.out.println( "Simple :" +(System.currentTimeMillis() - start)); m.setAccessible(true);//注意此处不同 long start1 = System.currentTimeMillis(); for(int i=0;i<10000000;i++){ m.invoke(a, new Object[]{}); } System.out.println("setAccessible(true) :"+( System.currentTimeMillis() - start1)); } } class A{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Main { public static void main(String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { Method m = A.class.getDeclaredMethod("getName", new Class[]{}); System.out.println(m.isAccessible()); //getName是public的,猜猜输出是true还是false A a = new A(); a.setName("Mr Lee"); long start = System.currentTimeMillis(); for(int i=0;i<10000000;i++){ m.invoke(a, new Object[]{}); } System.out.println( "Simple :" +(System.currentTimeMillis() - start)); m.setAccessible(true);//注意此处不同 long start1 = System.currentTimeMillis(); for(int i=0;i<10000000;i++){ m.invoke(a, new Object[]{}); } System.out.println("setAccessible(true) :"+( System.currentTimeMillis() - start1)); } } class A{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
测试结果
引用
false
Simple :4969
setAccessible(true) :250
明显 Accessible并不是标识方法能否访问的. public的方法 Accessible仍为false
使用了method.setAccessible(true)后 性能有了20倍的提升
Accessable属性是继承自AccessibleObject 类. 功能是启用或禁用安全检查
JDK API中的解释
引用
AccessibleObject 类是 Field、Method 和 Constructor 对象的基类。它提供了将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。对于公共成员、默认(打包)访问成员、受保护成员和私有成员,在分别使用 Field、Method 或 Constructor 对象来设置或获得字段、调用方法,或者创建和初始化类的新实例的时候,会执行访问检查。
在反射对象中设置 accessible 标志允许具有足够特权的复杂应用程序(比如 Java Object Serialization 或其他持久性机制)以某种通常禁止使用的方式来操作对象。
setAccessible
public void setAccessible(boolean flag)
throws SecurityException
将此对象的 accessible 标志设置为指示的布尔值。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
实际上setAccessible是启用和禁用访问安全检查的开关,并不是为true就能访问为false就不能访问
由于JDK的安全检查耗时较多.所以通过setAccessible(true)的方式关闭安全检查就可以达到提升反射速度的目的
Over
发表评论
-
Gradle笔记
2012-10-30 08:21 368076.1 每个构建包含一个或多个 "Proj ... -
Mybatis+Proxool+Spring多数据源切换
2012-08-10 13:57 6905话不多说直接上代码,用者自提,不喜勿喷,3Q < ... -
JSTL 学习、应用记录
2011-07-28 14:34 1224JSTL 学习、应用记录 原来一直没有看过,我说过我是新 ... -
Spring两大核心-AOP和IoC
2011-07-11 10:43 1427Spring两大核心-AOP和 ... -
java内存泄露解析
2011-07-11 10:42 1545原因有很多种, ... -
Java 反射机制
2011-07-11 10:41 1019Java 反射机制 摘要 Reflecti ... -
java 23种设计模式
2011-07-11 10:40 869工厂模式, 工厂方法模式,单例模式, 外观(Facad ... -
Class.forName和New的比较
2011-07-11 10:36 1151Class.forName和New的比较 ... -
null或空值的判断处理-java
2011-07-11 10:33 1403null或空值的判断处理-java 原帖地址 ... -
java中字符串链接性能比较
2011-07-11 10:31 1204原帖地址:http://blog.csdn.net/bes ... -
用MyElipse配置WebLogic
2011-04-12 16:16 1361(1)安装Weblogic设置如下: 首先建立domai ... -
Myeclipse9.0正式版下载地址(附破解包)
2011-04-12 11:09 4588用者自提,谢绝乱喷 Windows http:// ... -
C#之int挑战Java之Integer
2010-10-25 16:55 1912C#之int挑战Java之Integer ... -
是 String , StringBuffer 还是 StringBuilder ?
2010-07-06 09:39 1145相信大家对 String 和 StringBuffer 的 ... -
选择抽象类还是接口
2010-07-06 09:33 1119Java接口与Java抽象类的区别: 1. Ja ... -
JAVA程序员葵花宝典
2010-03-31 08:54 1239话不多说,先下载再说^^ -
Struts2笔记 - 10 自定义类型转换器
2010-02-10 17:05 1046package struts2.demo.action; ... -
Struts2笔记 - 09 请求参数的接收
2010-02-10 15:21 1441采用基本类型接收请求参数(get/post)在Action类中 ... -
Struts2笔记 - 08配置多个Struts配置文件
2010-02-10 14:54 1158动态方法调用和使用通配符定义 由请求参数指定调用action ... -
Struts2笔记 - 07 配置多个Struts配置文件
2010-02-08 16:13 1019配置多个Struts配置文件 <struts> ...
相关推荐
### Java反射创建get set方法及反射方法的调用 #### 概述 在Java编程语言中,反射(Reflection)是一种强大的技术,它允许程序在运行时检查类、接口、字段和方法的信息,并能够动态地创建对象和调用方法。本文将...
Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地访问、检测和修改类、接口、字段和方法等对象。然而,反射操作通常会引入额外的开销,这在性能敏感的应用场景下可能成为一个瓶颈。本文将深入...
JAVA提高反射效率,Java代码精粹,高手实现,反射高效代码
JAVA设计模式提高反射效率,Java代码精粹,高手实现,高效java代码,反射高效代码,绝对受益 JAVA设计模式提高反射效率,Java代码精粹,高手实现,高效java代码,反射高效代码,绝对受益 JAVA设计模式提高反射效率,...
- 单页应用(SPA)开发:利用Java代码的转换,可以将后端业务逻辑部分迁移到前端,提高交互性和响应速度。 - GWT(Google Web Toolkit):这是一个著名的Java到JavaScript转换框架,允许开发者用Java编写客户端...
总结一下,XML转实体类和实体类转XML涉及的主要知识点有:Java反射API、XML解析(DOM、SAX、StAX、JAXB),以及对象的序列化和反序列化。在实际开发中,我们需要根据项目需求选择合适的工具和方法,确保数据的准确...
Java版的AMR文件转MP3工具是一种编程解决方案,它利用特定的类库,如JAVE(Java Audio Video Encoder),将AMR编码的音频文件转换为MP3格式,以便于在Web上直接播放。AMR(Adaptive Multi-Rate)是主要用于语音编码...
这个命令将根据WSDL文件生成一系列的Java类,包括服务接口、消息实体、异常类以及客户端代理类。你可以通过添加不同的选项来定制生成的代码,例如指定包名、启用抽象模式等。 4. **理解生成的代码**: 生成的Java类...
轻松方便的把class文件转化为java文件
在Java中调用这个外部工具,我们可以使用`Runtime.getRuntime().exec()`方法。 以下是`Wav2mp3.java`文件的主要代码逻辑: ```java import java.io.File; import java.io.FileInputStream; import java.io....
Java 反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类,接口,变量以及方法的信 息。反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值。
这是一个用Java语言编写的音频转换源码。ConvertAudioFileFormat_Code.rar内是Myeclipse工程文件,导入Myeclipse即可调试使用。代码只演示了从wav转到Mp3,需要其他的类型的转换,请参考JAVE-Manual。
本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...
这里我们将深入探讨如何在Java的main方法中实现这个功能,以及相关的HTTP请求和响应处理。 首先,Java中发送HTTP POST请求通常会用到`HttpURLConnection`类或者第三方库如Apache HttpClient或OkHttp。下面我们将...
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....
1. 生成RSA密钥对:在.NET和Java中都应提供生成公钥和私钥的方法。 2. 导出和导入密钥:将密钥从.NET的XML格式转换为Java可读的DER或PEM格式,反之亦然。 3. 加密和解密:根据平台提供加密和解密的功能,确保在.NET...
### JSON转对象数组与对象数组转JSON(Java) 在Java编程语言中,处理JSON数据时经常需要进行JSON字符串与Java对象之间的转换。特别是在涉及到数组或集合的场景下,这种转换显得尤为重要。本文将详细介绍如何使用...
总的来说,通过Java实现图片到视频的转换,开发者需要理解多媒体处理的基本原理,掌握相关库的使用,以及处理可能遇到的各种兼容性和性能问题。这个过程既锻炼了编程技能,也加深了对多媒体处理的理解。
amr MP3文件java 将amr转换为MP3文件
Entry.java这个类的原理是先通过OfficeToPDF.java把文档转成pdf,然后再通过Pdf2Jpg.java这个类把PDF转成JPG或者PNG,想转成什么格式图片在Pdf2Jpg.java这个类当中设置一下,代码经过测试,完全没有问题,如果碰到...