`
sinokaka
  • 浏览: 327016 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sun.reflect.Reflection后续

    博客分类:
  • java
阅读更多
    看了前面的那个文章之后,我就开始了解了一下sun.reflect下面的类,看到一个ReflectionFactory这个类的一个newXXXX的方法,我想如果可以给Class随便添加方法,字段的话,那么岂不是可以随便构造类型了,哈哈,感觉很好玩,于是先写了一个测试,调用newField方法,添加一个字段看看是否可以。可是遇到一些问题,现在是百思不得其解阿。贴出来,大家看看。
 
import java.lang.reflect.Field;
import sun.reflect.ReflectionFactory;
public class T {
    public static void main(String[] arg) throws Exception {
        T3 t3 = new T3();
        T3 t32 = new T3();
        ReflectionFactory rf = ReflectionFactory.getReflectionFactory();
        Field f2 = rf.newField(T3.class, "newFiled", int.class, 1, 1);
        System.out.println("Field Class:" + f2.getDeclaringClass());
        f2.set(t3, new Integer(20));
        System.out.println("t3 value:" + f2.get(t3));
        System.out.println("t32 value:" + f2.get(t32));
        Field f = t3.getClass().getField("newFiled");
        f.set(t3, new Integer(20));
        System.out.println(f.get(t3));
    }
}
class T3 {
    String value;
    /**
     * 获得****
     * @return 返回 value。
     */
    public String getValue() {
        return value;
    }
    /**
     * ****属性的方法
     * @param value 要设置的 value。
     */
    public void setValue(String value) {
        this.value = value;
    }
}
 
现在总是抛出来一个异常,NoSuchFieldException,可是前面明明可以得到,为什么还会抛出来异常,感觉很奇怪。现在的理解是方法(Filed)已经挂上类(Class)了,可是类病没有挂上这个方法,也只能这么理解了
Field Class:class t.T3
t3 value:20
t32 value:0
java.lang.NoSuchFieldException: newFiled
 at java.lang.Class.getField(Class.java:919)
 at t.T.main(T.java:29)
Exception in thread "main"
分享到:
评论
2 楼 m133538 2013-12-20  
现在好像行不通了,reflect包用户好像没有 导入的权限的
1 楼 willse 2011-08-30  
我试了下新增一个方法也不行...... 只有新增构造函数才可以。

相关推荐

    jdk1.8的src,扩展了sun.reflect,unsafe

    在JDK 1.8版本中,开发者对`sun.reflect`和`unsafe`这两个包进行了扩展,这为高级功能和性能优化提供了可能。 `sun.reflect`包是Java反射API的一部分,它包含了对Java类和接口的运行时表示以及动态访问的内部实现。...

    jdk sun 开头的源码

    例如,`sun.reflect.Reflection`类是反射操作的公共入口点,而`sun.reflect.generics.repository`子包则与泛型相关的反射有关。 3. **JVM相关**:`sun.jvm`包含了与Java虚拟机(JVM)密切相关的类。例如,`sun.jvm....

    scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetExcep

    标题中的问题“scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetException”是用户在尝试使用Scrcpy时遇到的一个常见错误。这个错误通常意味着在执行某个方法时,Java运行时环境遇到了未预期的情况。...

    解决axis2-CodegenWizardPluginBUG- java.lang.reflect.InvocationTargetException

    标题中的“解决axis2-CodegenWizardPluginBUG- java.lang.reflect.InvocationTargetException”指的是在使用Apache Axis2的CodegenWizardPlugin工具时遇到的一个错误。这个工具是Axis2框架的一部分,用于自动生成...

    Android代码-fest-reflect

    // import static org.fest.reflect.core.Reflection.*; // Loads the class 'org.republic.Jedi' Class jediType = type("org.republic.Jedi").load(); // Loads the class 'org.republic.Jedi' as 'org.repu

    java.lang.reflect.Proxy 学习资料 讲解 例子 源码

    java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码

    server frame base on c.rar

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke...

    MyEclipse axis2 wsdl java.lang.reflect.invocationtargetexception

    MyEclipse axis2 wsdl java.lang.reflect.invocationtargetexception code gen 大家要注意一定要仔细,这个问题基本上缺少包引起的,而且一定要clean 如果需要axis2插件 以及这个plugins中的包在我的其他资源里面有

    Java.lang.reflect 包下常用的类及方法简介

    在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...

    jdk1.8源码包含sun

    如`sun.reflect.Reflection`和`sun.reflect.generics.repository`等类,它们是Java动态类型和泛型的关键支持。通过这些类,开发者可以深入理解Java如何在运行时动态获取类信息,创建实例,访问和修改私有成员等。 2...

    jre 源码里面的sun. 开头源码

    5. **`sun.reflect`**: 包含了反射相关的实现,比如`ClassLoader`和`MethodAccessor`,这些帮助Java程序在运行时动态地获取类信息和调用方法。 6. **`sun.net`**: 与网络相关的实现,如TCP/IP协议栈的处理,HTTP...

    jdk源码-补充缺少sun包下的源码

    3. `sun.reflect`包:包含反射相关的类,如`sun.reflect.generics.repository`子包提供了泛型元数据的访问,有助于理解和利用反射功能。 4. `sun.security`包:涉及密码学、SSL/TLS协议、数字证书等相关实现,是Java...

    JDK源码(sun包)

    - **sun.reflect**:包含了反射相关的类,如`sun.reflect.generics.repository`子包,用于解析泛型信息。 - **sun.security**:处理与安全相关的类,如证书、密钥、加密算法等。 - **sun.awt** 和 **sun.swing**...

    Java reflect 机制详解

    免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者

    java反射(reflect)

    1. 动态代理:使用`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`可以创建动态代理对象,实现AOP(面向切面编程)。 2. 数据库操作框架:如MyBatis,通过反射动态生成SQL语句并执行。 3. XML...

    richfaces_erro

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect....

    JAVA8 完整源码(包含Sun包源码)

    9. **反射与注解处理**:Sun 包源码中包含了 `sun.reflect` 和 `sun.misc` 相关类,这些类对 Java 反射和注解处理提供了底层支持,虽然不推荐直接使用,但了解其工作原理有助于理解 Java 运行时机制。 10. **类加载...

    jaxen.jar和dom4j.jar

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at ...

    scala-reflect-2.12.10-API文档-中文版.zip

    赠送jar包:scala-reflect-2.12.10.jar; 赠送原API文档:scala-reflect-2.12.10-javadoc.jar; 赠送源代码:scala-reflect-2.12.10-sources.jar; 赠送Maven依赖信息文件:scala-reflect-2.12.10.pom; 包含翻译后...

Global site tag (gtag.js) - Google Analytics