java - 一个领域出错的反射(reflection)

标签 java android reflection field

我一直在尝试对 android.os.build 类中的特定字段使用反射,MANUFACTURER 字段... 我试过使用这段代码:

try
    {
        Class myBuildClass = android.os.Build.class;
        Field m1 = Build.class.getDeclaredField("MANUFACTURER");
        validField = true;

        manufacturer = Build.MANUFACTURER;
    }
    catch(Exception ex)
    {
        manufacturer = Build.PRODUCT;
        System.err.println("getDeviceSpecifics, got an exception during getting Field : " + ex.toString());
    }

我遇到了以下错误:

06-01 11:26:37.639: WARN/dalvikvm(7342): VFY: unable to resolve static field 2 (MANUFACTURER) in Landroid/os/Build;
06-01 11:26:37.639: WARN/dalvikvm(7342): VFY:  rejecting opcode 0x62 at 0x0048

06-01 11:26:37.639: WARN/dalvikvm(7342): VFY:  rejected Lmypackage/android/managementModule/Management;.getDeviceSpecifics ()V
06-01 11:26:37.639: WARN/dalvikvm(7342): Verifier rejected class Lmypackage/android/managementModule/Management;

在调试时我注意到 InvocationtargetException 不断被抛出,所以我猜我没有正确地实现整个反射原则...... 知道哪里出了问题,或者知道如何正确地为单个 Field 实现 Refelction 吗?

最佳答案

完美解决

try // reflection
  {
   Field manufacturerField = android.os.Build.class
     .getDeclaredField("MANUFACTURER");
   manufacturerField.setAccessible(true);
   String manufacturerName = manufacturerField.get(
     android.os.Build.class).toString();
   System.out.println("manufacturerName: " + manufacturerName);

  } catch (Exception ex) {

   System.err
     .println("getManufacturerName, got an exception during getting Field : "
       + ex.toString());
  }

关于java - 一个领域出错的反射(reflection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948606/

相关文章:

java - 如何使用 AutoBean 实现不同基类型的列表,如 String、Integer 等?

java - 为什么要将上下文传递给 Intent 的构造函数?

c# - 反射:从 List<> 的单个元素获取属性/字段

c# - 访问 T4 模板中的自定义属性 (VS2012 MVC4)

java - Java 链表中的指针

java - 无法使用 java 从 yahoo API 获取 OAuth 2.0 访问 token

android - 使用 DDMS 单步执行 KML 文件

java - 如何在 Java 中使用反射获取 Enum 字段名称?

java - 从ext block build.gradle无法解析依赖版本

android - 易于绘制的箭头