草庐IT

Reflection

全部标签

java - 怎么知道Field是数组? Java 中的 (java.lang.reflect.Field)

我有来自Field的数组:Field[]fields=instance.getClass().getDeclaredFields();for(Fieldfield:fields){if((field.getType()==Integer.class[])||(field.getType()==Object.class[])){//...}}如何学习Field是数组?(如何知道哪个字段是数组(Object[]数组)?),请帮助我。 最佳答案 使用Class#isArray():if(field.getType().isArray())

java - 在 Java 中从字符串解析对象

我正在尝试编写一个通用方法来从字符串中解析对象。明确地说,我有以下不太优雅的实现:publicstaticObjectparseObjectFromString(Strings,Classclass)throwsException{StringclassName=class.getSimpleName();if(className.equals("Integer")){returnInteger.parseInt(s);}elseif(className.equals("Float")){returnFloat.parseFloat(s);}elseif...}有没有更好的方法来实现这

Java:如何加载已经在类路径上的类(及其内部类)?

如何加载已经在类路径上的类、实例化它,以及实例化其中定义的任何内部类?如:publicclassTestClass{publicclassInnerClass{}} 最佳答案 内部类不能存在于父类之外。您需要先构造父类。没有反射(reflection),这看起来像:InnerClassinnerClass=newTestClass().newInnerClass();在反射中,需要在构造内部类时传入父类。ObjecttestClass=Class.forName("com.example.TestClass").newInstanc

java - 如何观察变量的变化

我想知道是否有任何方法可以让我在程序运行时观察变量值的变化。当然不使用调试器,我想以编程方式。例如:classA{publicstaticintvalueToBeWatched;}所以在运行时,如果我项目中任何类的任何方法修改了这个值,MyValueChangeListner事件应该被调用。 最佳答案 你不能。Java本身没有内置修改修改Hook。显然,您可以进行轮询。但那样就不会“直播”了。AspectJ可能允许这样的想法,但我不确定它是否适用于原始变量,或者仅当您使用getter和setter时才适用。干净的Java方式是使变量

java - 如何在 Scala 中获取 Java 的 int.class?

我正在使用Scala来处理Java的反射API。但我似乎无法弄清楚如何在Scala中访问Java中的内容:int.class、float.class、boolean.class。基本上是表示原始数据类型的类对象。那么int.class的Scala版本是什么? 最佳答案 int.class、float.class等不存在。每个等效的装箱类型都有一个名为TYPE的静态字段,它表示原始类型。这是你的意思吗?例如对于整数/整数:http://docs.oracle.com/javase/6/docs/api/java/lang/Intege

Java 反射性能问题

我知道有很多话题都在谈论反射性能。甚至官方Java文档都说反射速度较慢,但​​我有这段代码:publicclassReflectionTest{publicstaticvoidmain(String[]args)throwsException{Objectobject=newObject();Classc=Object.class;intloops=100000;longstart=System.currentTimeMillis();Objects;for(inti=0;i我认为这不是一个有效的基准,但至少应该显示出一些差异。我执行它是为了等待反射正常调用比常规调用慢一点。但这会打印

java - 如何使用属性名称识别 setter 方法?

我们可以使用属性名称找到setter方法名称吗?我有一个动态生成的map通过使用map中的键(即propertyName),我需要为对象调用适当的setter方法并传递map中的值(即propertyValue)。classA{Stringname;Stringage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetCompany(){returncompany;}publicvoidsetCompany(Stringcompany){this.

java - 您最喜欢 Java API 的哪个领域?

我很想知道其他Java程序员认为他们最喜欢这门语言的什么部分,为什么他们会有这种感觉,以及为什么其他程序员也应该想要深入了解它。我正在寻找简单性、性能等原因。谢谢。 最佳答案 我最喜欢的JavaAPI是集合框架.我发现自己一直在使用它而不是滚动我自己的实现,而且它非常有趣且易于使用。它由几个有用的和高性能数据结构和算法的可互换实现,以及围绕它们包装附加功能的几种便捷方法。JoshBloch的教程可以在这里找到:http://java.sun.com/docs/books/tutorial/collections/index.html

java - Java bean 的类型安全属性名称

我正在寻找以类型安全的方式获取属性名称的替代方法。例如,使用lambdaj,我可以这样做:propertyName(on(Contract.class).getContractKey())但这有点冗长,性能也不是很好。我希望在构建过程中生成一些东西。 最佳答案 你检查过了吗BeanUtils?获取属性的名称通常不是类型不安全的部分,它是通过名称访问属性,这往往是类型不安全的。 关于java-Javabean的类型安全属性名称,我们在StackOverflow上找到一个类似的问题:

java - getMetaData() 抛出内部 NullPointerException

在ColdFusion10中的组件上调用getMetaData()似乎会随机抛出内部NullPointerException。虽然此异常既不会暴露也不会影响实际请求(因此对我们的应用程序本身并不重要),但它仍然会填满exception.log。快速归档。我注意到这可能与ColdFusion的路径缓存有关,因为我只在生产服务器上获得这些NullPointerException条目。我还注意到,这个异常只在我使用getMetaData()的每个组件上抛出一次,尽管似乎并不是每次第一次调用都会触发它。澄清一下:getMetaData()工作得很好,但它有时会在ColdFusion的excep