草庐IT

Reflection

全部标签

java - isAnnotationPresent() 在 Java 中与父类(super class)型引用一起使用时返回 false

我正在尝试使用反射从父类(superclass)型引用变量中获取注释详细信息,以使该方法接受所有子类型。但是isAnnotationPresent()返回false。与其他注解相关的方法相同。如果用于确切的类型,则输出符合预期。我知道注释信息将在对象上可用,即使我通过父类(superclass)型引用也是如此。@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})public@interfaceTable{Stringname();}@Table(name="some_table")publicclassSomeEn

java - 我如何只获得带有反射的可实例化类

这个问题在这里已经有了答案:HowcanIdeterminewhetheraJavaclassisabstractbyreflection(3个答案)关闭9年前。我正在使用reflectionspackage得到一组实现某个接口(interface)的类。该集合将用作可能的命令行选项列表。我的问题是我只想获得可实例化的类,但现在从以下代码中同时获得可实例化和不可实例化的类(例如抽象类):Map>optimizerList=newHashMap>();Reflectionsreflections=newReflections("eva2.optimization.strategies")

java - 当枚举类型引用是 Class<?> 时,如何将 String 转换为枚举值?

我有代码使用其setter方法在对象上设置值。其中一个setter将Enum类型作为方法参数。代码看起来像这样:Stringvalue="EnumValue1";Methodsetter=getBeanWriteMethod("setMyEnumValue");Classtype=setter.getParameterTypes()[0];ObjectconvertedValue=null;if(type.isEnum()){convertedValue=convertToEnum(value,type);}else{convertedValue=ClassUtils.convertT

java - 指定在 ObjectOutputStream 中(不)序列化哪些字段而不使用 transient 或 serialPersistentFields

有什么办法可以告诉ObjectOutputStream应该在不使用关键字transient的情况下序列化可序列化类的哪些字段并且没有定义serialPersistentFields-大批?背景:我需要使用注释来定义类的哪些成员应该被序列化(或者更好:不被序列化)。涉及的类必须实现接口(interface)Serializable,但不是Externalizable,所以我不想为每个对象实现序列化/反序列化算法,而只想为它使用注释。我无法使用transient关键字,因为注释需要一些进一步的检查来确定一个字段是否应该被序列化。这些检查必须由ObjectOutputStream完成。(或在

java - 引用内部静态 Java 类时工具箱编译的奇怪行为

假设我有以下java类:packagecom.test;publicclassOuter{publicstaticclassInner{publicstaticfinalStringVAL="Inner";}}我可以像您期望的那样从Scala代码中引用VAL常量,但是当我尝试使用Scala工具箱编译器编译引用该字段的代码时,它失败了。(堆栈跟踪遵循以下示例)。这段代码演示了我的意思:importscala.reflect.runtime.universeimportscala.tools.reflect.ToolBoxobjectIssueextendsApp{valmirror=un

java - 线程卡在 getDeclaredConstructors 中的可能原因?

对于我们应用程序的一次安装,我们一直在生产中看到用户报告为“系统变慢”或“请求永不返回”的问题。最后不得不重启服务器。我们遇到了几起这样的事件,每晚重启服务器似乎是一种解决方法。我们的应用程序大量使用动态类加载(.jar文件作为blob存储在数据库中)和反射。环境详情:Java1.7.021操作系统:Linux(2.6.32-504.16.2.el6.x86_64)JBossEAP6.2正在使用Appdynamics内存和gc设置:-XX:PermSize=256m-XX:MaxPermSize=2560m-Xms2048m-Xmx10240m-server-XX:+UseParall

java - Field 中原始 getter/setter 的目的是什么?

在Field中publicObjectget(Objectobj)方法的文档中类说Thevalueisautomaticallywrappedinanobjectifithasaprimitivetype.对于publicvoidset(Objectobj,Objectvalue)来说Iftheunderlyingfieldisofaprimitivetype,anunwrappingconversionisattemptedtoconvertthenewvaluetoavalueofaprimitivetype.所以我是对的,像getInt和setInt这样的特定原始getter和s

java - 强化高 : Access specifier manipulation on reflection that is used to invoke a private constructor

我使用反射来调用类的私有(private)构造函数,以解决Sonar扫描报告显示的分支覆盖不足问题。这是我正在工作的代码片段://reflectiontoaccessaprivateconstructorofaclassConstructorc=CMISBridgeMaps.class.getDeclaredConstructor(newClass[0]);c.setAccessible(true);cmisBridgeMaps=c.newInstance(newObject[0]);以上代码解决了我的Sonar扫描关键问题。但不幸的是,fortify现在在以下行中显示访问说明符操作问

Java 反射性能在打包为 jar 时下降

我真的很头疼。我尝试了一切,到处搜索。它来self继承的测试JAR的应用程序。(它由一个GUI前端和一个执行实际检查的命令行应用程序组成。GUI通过在其自身上启动一个新的JVM[java-cp"itself.jar"com.different.mainClass]。这是一个糟糕的设计,我知道,但可能是相关的。)无论如何,这个程序包含一些嵌套在两个for循环中的反射调用。问题是当应用程序被JARed时,第一次反射调用每次迭代只花费一秒钟。但是当它从类中运行时,它需要几毫秒。实际上,这意味着这个命令:java-jarmyjar.jar需要几个小时。这个命令:java-cp"...[bunc

java.lang.NoClassDefFoundError : org/omg/CORBA/InterfaceDef 错误

当我调用java.lang.Class的方法getMethod时,我看到java.lang.NoClassDefFoundError:org/omg/CORBA/InterfaceDef。我正在尝试使用反射获取TMF特定jar的EmsSeeionFactory_I中的getEmsSession方法。但是当我检查jacorb.jar中的类时,org/omg/CORBA/InterfaceDef.class在类路径上可用。我在其他论坛上看到过,但在这些论坛中也没有看到相同问题的答案。看起来这个异常是从nativeVM代码抛出的。我现在毫headless绪。有任何想法吗?完整的堆栈跟踪如下j