Java反射实用程序

时间:2010-03-30 14:45:22

标签: java reflection

是否有一个实用程序来获取一个不使用类似于BeanUtils的反射从对象获取前缀的属性?例如如果我指定“hashCode”并且我想获取object.hashCode()值。

感谢。

5 个答案:

答案 0 :(得分:3)

您可以在每个hashCode()上致电Object。你不需要反思。

否则,您可以使用标准反射类 - java.lang.Class及其返回getMethod(..)的方法java.lang.reflect.Method

答案 1 :(得分:1)

java reflection API允许您访问类的给定实例上的任何属性,包括私有变量。

Reflection是一个强大的工具,允许您执行许多操作,包括使用私有构造函数实例化对象。

这是一个体面的反思教程,快速谷歌搜索出现了。

http://tutorials.jenkov.com/java-reflection/index.html

答案 2 :(得分:1)

org.apache.commons.beanutils.MethodUtils就是我想要的。

答案 3 :(得分:0)

查找类字段:可以找出在类中定义的数据字段。为此,可以使用以下代码:

   import java.lang.reflect.*;

   public class field1 {
      private double d;
      public static final int i = 37;
      String s = "testing";

      public static void main(String args[])
      {
         try {
            Class cls = Class.forName("field1");

            Field fieldlist[] 
              = cls.getDeclaredFields();
            for (int i 
              = 0; i < fieldlist.length; i++) {
               Field fld = fieldlist[i];
               System.out.println("name
                  = " + fld.getName());
               System.out.println("decl class = " +
                           fld.getDeclaringClass());
               System.out.println("type
                  = " + fld.getType());
               int mod = fld.getModifiers();
               System.out.println("modifiers = " +
                          Modifier.toString(mod));
               System.out.println("-----");
            }
          }
          catch (Throwable e) {
             System.err.println(e);
          }
       }
   }

来源:http://java.sun.com/developer/technicalArticles/ALT/Reflection/

答案 4 :(得分:0)

  

是否有一个实用程序来获取一个没有前缀的属性,使用类似于BeanUtils的反射从对象获取?

有标准的反射API,但您要求的是有问题的。 Bean约定是以getis(以及某些其他特征)开头的方法是属性。如果没有这种约定,就不可能知道类的哪个方法是属性getter(或setter),哪些是具有完全不同目的的方法。例如,您不希望以错误的信念来调用File.delete(),因为它是某个boolean属性的吸气剂!