看了前面的那个文章之后,我就开始了解了一下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"
分享到:
相关推荐
在JDK 1.8版本中,开发者对`sun.reflect`和`unsafe`这两个包进行了扩展,这为高级功能和性能优化提供了可能。 `sun.reflect`包是Java反射API的一部分,它包含了对Java类和接口的运行时表示以及动态访问的内部实现。...
例如,`sun.reflect.Reflection`类是反射操作的公共入口点,而`sun.reflect.generics.repository`子包则与泛型相关的反射有关。 3. **JVM相关**:`sun.jvm`包含了与Java虚拟机(JVM)密切相关的类。例如,`sun.jvm....
标题中的问题“scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetException”是用户在尝试使用Scrcpy时遇到的一个常见错误。这个错误通常意味着在执行某个方法时,Java运行时环境遇到了未预期的情况。...
标题中的“解决axis2-CodegenWizardPluginBUG- java.lang.reflect.InvocationTargetException”指的是在使用Apache Axis2的CodegenWizardPlugin工具时遇到的一个错误。这个工具是Axis2框架的一部分,用于自动生成...
// 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 学习资料 讲解 例子 源码
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 code gen 大家要注意一定要仔细,这个问题基本上缺少包引起的,而且一定要clean 如果需要axis2插件 以及这个plugins中的包在我的其他资源里面有
在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...
如`sun.reflect.Reflection`和`sun.reflect.generics.repository`等类,它们是Java动态类型和泛型的关键支持。通过这些类,开发者可以深入理解Java如何在运行时动态获取类信息,创建实例,访问和修改私有成员等。 2...
5. **`sun.reflect`**: 包含了反射相关的实现,比如`ClassLoader`和`MethodAccessor`,这些帮助Java程序在运行时动态地获取类信息和调用方法。 6. **`sun.net`**: 与网络相关的实现,如TCP/IP协议栈的处理,HTTP...
3. `sun.reflect`包:包含反射相关的类,如`sun.reflect.generics.repository`子包提供了泛型元数据的访问,有助于理解和利用反射功能。 4. `sun.security`包:涉及密码学、SSL/TLS协议、数字证书等相关实现,是Java...
- **sun.reflect**:包含了反射相关的类,如`sun.reflect.generics.repository`子包,用于解析泛型信息。 - **sun.security**:处理与安全相关的类,如证书、密钥、加密算法等。 - **sun.awt** 和 **sun.swing**...
免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者
1. 动态代理:使用`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`可以创建动态代理对象,实现AOP(面向切面编程)。 2. 数据库操作框架:如MyBatis,通过反射动态生成SQL语句并执行。 3. XML...
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect....
9. **反射与注解处理**:Sun 包源码中包含了 `sun.reflect` 和 `sun.misc` 相关类,这些类对 Java 反射和注解处理提供了底层支持,虽然不推荐直接使用,但了解其工作原理有助于理解 Java 运行时机制。 10. **类加载...
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at ...
赠送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; 包含翻译后...