草庐IT

Reflection

全部标签

java - Java 中的类型安全方法反射

是否有任何实用的方法可以以类型安全的方式引用类中的方法?一个基本示例是,如果我想创建类似以下实用函数的东西:publicResultvalidateField(Objectdata,StringfieldName,ValidationOptionsoptions){...}为了调用它,我必须这样做:validateField(data,"phoneNumber",options);这迫使我要么使用魔法字符串,要么在某处用该字符串声明一个常量。我很确定使用普通Java语言没有办法解决这个问题,但是是否有某种(生产级)预编译器或替代编译器可以提供解决方法?(类似于AspectJ扩展Java

java - 保护最终变量免受反射

我想设计一个类来逐步证明不变性。下面是一个简单的类publicclassImmutableWithoutMutator{privatefinalStringfirstName;privatefinalStringlastName;privatefinalintage;publicImmutableWithoutMutator(finalStringfirstName,finalStringlastName,finalintage){this.firstName=firstName;this.lastName=lastName;this.age=age;}@OverridepublicS

Java Bean : Overglorified Associative Arrays?

我不太了解JavaBean的本质。好吧,至少我是如何看待它们用于我们商店的一些代码库中的。我发现了这个问题:JavaBeans:WhatamImissing?那里接受的答案看起来像是程序员倾向于滥用JavaBean(我真的不怀疑),但我看到它经常发生并且故意发生,我想我仍然遗漏了一些东西。我看到的代码如下:publicclassFooBean{privateinta;privateintb;privateintc;publicintgetA(){returna;}publicintsetA(intx){a=x;}//etc...}没有比getter和setter更进一步的结构或控制。是

java - 使用反射从抽象基类访问构造函数

我正在玩弄Java的反射。我有一个带有构造函数的抽象类Base。abstractclassBase{publicBase(Stringfoo){//dosomemagic}}我还有一些扩展Base的类。它们不包含太多逻辑。我想用Base的构造函数实例化它们,而不必在那些派生类中编写一些代理构造函数。当然,我想用反射来实例化那些派生类。说:Classcls=SomeDerivedClass.class;Constructorconstr;constr=cls.getConstructor(newClass[]{String.class});//willreturnnullClasscls

java - 对接口(interface)重写方法的反射(reflection)

我有以下代码,一个通用的ITest接口(interface)由一个非通用的ITestDouble接口(interface)扩展。op方法被ITestDouble覆盖。当我尝试列出ITestDouble的所有方法时,我得到了两次op。如何验证它们实际上是相同的方法?publicclassTest{publicstaticvoidmain(String[]args)throwsNoSuchMethodException{for(Methodm:ITestDouble.class.getMethods()){System.out.println(m.getDeclaringClass()+"

java - 是否可以使用 Commons Beanutils 自动实例化嵌套属性?

我正在使用ApacheCommonsBeanUtils的PropertyUtils.setProperty(object,name,value)方法:提供这些类(class):publicclassA{Bb;}publicclassB{Cc;}publicclassC{}还有这个:Aa=newA();Cc=newC();PropertyUtils.setProperty(a,"b.c",c);//exception如果我尝试这样做,我会得到:org.apache.commons.beanutils.NestedNullException:bean类“classA”上的“b.c”为空属性

java - 用内部类注释类

我通过反射创建我的枚举,为此我向每个枚举添加一个实现抽象工厂的内部类。现在我想访问这个内部类以调用方法:@Factory(FooFactory.class)publicenumFoo{FOO,BAR;publicclassFooFactoryimplementsAbstractFactory{publicFoocreate(Stringvalue){returnvalueOf(value.toUpperCase());}}}@Factory的定义是:@Retention(RetentionPolicy.RUNTIME)public@interfaceFactory{Classvalue

java - 通过反射获取枚举的值

我有一个这样声明的枚举:publicenumMode{RUNNING("SytemRunning"),STOPPED("SystemStopped"),IDLE("tmpIdle");publicstaticStringkey;privateMode(Stringkey){this.key=key;}}现在,我想通过反射获取此枚举的键(SystemRunning、SystemStopped、tmpIdle):Classc=Class.forName("Mode");Object[]objects=c.getEnumConstants();//nowthisisnotwhatIwant,

java - hibernate 如何访问私有(private)字段?

hibernate如何访问java类的私有(private)字段/方法,例如设置@Id?谢谢 最佳答案 正如Crippledsmurf所说,它使用了反射。参见Reflection:BreakingalltheRules和Hibernate:PreservinganObject'sContract. 关于java-hibernate如何访问私有(private)字段?,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

java - 如何将多个参数传递给java反射中的方法

您好,我正在使用反射来实现某些目标。我已经获得了类名、该类的方法名以及需要在文件中传递给该方法的参数值(获取任何文件。不是约束)。我必须使用参数调用该方法。此方法不返回任何内容。这个类中有大量方法,每个方法的参数列表各不相同。例如:method1(String,String,int,boolean)method1(String,int,boolean)同样我有不同的排列组合。那么我怎样才能做到这一点。我尝试过使用不同的switch子句对事物进行硬编码,但维护起来确实是一项开销和风险。我们可以动态地做这件事吗,比如从文件中动态读取方法名称及其参数并调用它。任何小代码片段都会有所帮助。TI