Tag: reflection

获取时是否存在JSTL EL访问器转换优先级?

这是一个由两部分组成的问题。 我有一个person对象,其上有一个名为“active”的char属性。 Person有一个getActive()方法,它按预期返回一个char。 在我的JSTL EL中,我有以下内容: Active 这永远不会过去。 我的理解是JSTL中引用的文字是字符串(不管是单引号还是双引号),并且从getActive调用中保留了char类型,因此当getActive()返回字符’1’时,这两个值不相等。 作为替代方案,我添加了一个返回布尔值的isActive()方法。 在这种情况下,以下工作: Active 这是我的问题: 关于char比较我的理解是否正确? 如果是这样,有没有办法转换JSTL中的类型,以便它们具有可比性? 当getActive()和isActive()都存在时,EL翻译会调用哪一个? 似乎isActive()获得了优先权,但是有正式的文件订购吗?

如何访问注释属性中描述的字段

是否可以访问字段值,其中字段名称在注释中描述,该注释注释了类中的另一个字段。 例如: @Entity public class User { @NotBlank private String password; @Match(field = “password”) private String passwordConfirmation; } 注解: @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = FieldMatchValidator.class) @Documented public @interface Match { String message() default “{}”; Class[] groups() default {}; Class[] payload() default {}; String field(); } 现在,是否可以从ConstraintValidator实现类中的类User访问字段密码? 编辑: 我写了这样的话: public class MatchValidator implements ConstraintValidator { private String […]

通过reflection检索参数值

我试图想出一个方法的设计,该方法将另一个方法作为参数并检索传递的方法的参数值。 如何才能做到这一点? 我尝试过使用java.lang.reflect.*但似乎找不到支持它的API。

reflection:在静态方法中获取调用对象

是否有可能在此方法中获取调用静态方法的对象? 我有这个代码: class A{ static void foo(){ } } A a = new A(); a.foo(); 我可以在方法foo()获取实例吗?

如何通过Android上的reflection实例化成员类

我有一个保存/加载框架,应该保存任意对象图。 这包括非静态嵌套类的实例。 嵌套类需要由创建它们的父类实例拥有,嵌套类使用合成字段知道它所属的实例。 举个简单的例子,我提出这个类: public class Foo implements Savable { private class Bar implements Savable { public void saveState(Saver saver) { saver.putInt(3); } } private Bar myBar = new Bar(); public void saveState(Saver saver) { saver.putSavable(myBar); } } 在“标准”编译器上,以下代码可以很好地接受一个对象( myBar ),找到它的父( Foo一个特定实例),并保持对子的引用: if (objectClass.isMemberClass()) { //We are a member class, which means we are a […]

Java反思。 运行外部jar并引用它的类?

这段代码片段允许我在我的程序中运行jar: File f = new File(“client.jar”); URLClassLoader cl = new URLClassLoader(new URL[]{f.toURI().toURL(), null}); Class clazz = cl.loadClass(“epicurus.Client”); Method main = clazz.getMethod(“main”, String[].class); main.invoke(null, new Object[]{new String[]{}}); 无论如何,我可以参考那个外部程序的类吗? 我希望能够更改其JFrame的标题。

是否需要将私有嵌套类的内部声明为私有?

经过1000多年的private private ,我发现它可能不需要 public class Outer { private static class Inner { // you may drop static private void innerMethod() {} } } 是否有任何情况从innerMethod()中删除private会在封装中产生差异(或者由Outer 使用 )? 想想也反思 如果不是 ,建议放弃它或保持它的编码风格吗? 我会说不,然后放弃但不确定。 编辑:刚才意识到我这样做的方式肯定是错的 – 至少对于Inner的字段 – 将这些字段声明为私有然后在外部类中使用它们 – 因为这会在字节码中生成( “合成” )访问器 – 这是至少膨胀。 太棒了 – 所以现在我更感兴趣的是有一个关于声明那些( Inner字段, Outer使用的方法)包私有(或公共@JBNizet在评论中说)的安全含义的帐户

在inheritance的情况下使用model.getClass()。getMethod的问题

我正在关注Oracle Network上的这篇文章 ,以便在开发桌面应用程序时实现MVC。 我有一个问题:我正在使用由SimpleDirectory和WildcardDirectory扩展的抽象Directory类。 其中一个模型管理器方法接受Directory作为参数: public void addDirectoryDummy(Directory d){ System.out.println(“Hello!”); } 抽象控制器使用setModelProperty来调用此方法: protected void setModelProperty(String propertyName, Object newValue) { for (AbstractModel model: registeredModels) { try { Method method = model.getClass(). getMethod(propertyName, new Class[] { newValue.getClass() } ); method.invoke(model, newValue); } catch (Exception ex) { ex.printStackTrace(); } } } 我从我的实际控制器中调用它,如下所示: public void dummy( Directory d){ setModelProperty( […]

使用reflection获取字段值

我无法获得字段值。我想要做的是在运行时获取Object。 请让我知道我哪里出错了。 的Test.class import java.lang.reflect.Field; public class Test { public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { final Field field = Class.forName(“com.logging.EX”).getDeclaredField(“value”); field.setAccessible(true); field.get(Class.forName(“com.logging.EX”)); } } EX.class public class EX { private String value; public EX(){ value=”data”; } /** * @return the value */ public String getValue() { return value; } […]

意外的Class.getMethod行为

不久前我在使用Class.getMethod和autoboxing时遇到了类似的问题 ,在你自己的查找算法中实现它是有意义的。 但真正让我感到困惑的是,以下内容无效: public class TestClass { public String doSomething(Serializable s) { return s.toString(); } public static void main(String[] args) throws SecurityException, NoSuchMethodException { TestClass tc = new TestClass(); Method m = tc.getClass().getMethod(“doSomething”, String.class); } } String.class实现了Serializable接口,我真的希望它包含在查找方法中。 我是否也必须在自己的查找算法中考虑这一点? 编辑 :我确实读过Javadoc, 所以让我强调问题的第二部分 :如果有的话,你有关于如何快速做到的建议(我已经不得不添加一些自定义匹配和转换算法,我不想要它太慢了?)