mshd.net
当前位置:首页 >> jAvA动态 ClAss >>

jAvA动态 ClAss

不行的,Java是静态类型语言。 所有的类定义在编译器已经确定了。 不过可以利用Map来实现你的需求。

Class c = Person.class; System.out.println(c.getSimpleName()); 或者 Class c=Class.forName("xxx.xxx.xxx.Person"); System.out.println(c.getSimpleName());

首先用 Class.forName(完整类名)获得一个Class对象clazz,然后调用Class对象clazz的newInstance()方法得到一个对象。例如: package kown.reflect;public class ReflectTest{ public static void main(String[] args) { try { Class clazz = Cla...

public class Dog(){}public class Cat(){}public class Demo(){ public static void main(String[] args) { Dog d = new Dog(); Cat c = new Cat(); List list = new ArrayList(); list.add(d); list.add(c); for (int i = 0; i < list.size();...

既然是 动态的 那就是 在运行期才知道对象的实际类型 那么假如你可以通过反射强制类型转换 你该用什么类型的变量去引用它呢 还是只能用Object,既然是反射 能动态获得对象的类型,以及属性,参数 就行了

动态生成方法只能用反射,示例代码如下: public Object invokeMethod(T obj,String methodName, Object[] args){ Object object = null; @SuppressWarnings("rawtypes") Class ownerClass = obj.getClass(); @SuppressWarnings("rawtypes") Cla...

参照网上其他童鞋的例子与介绍,修改了一下: import java.io.IOException; import java.lang.reflect.Method; import java.net.URI; import java.net.URISyntaxException; import java.util.Arrays; import javax.tools.JavaCompiler; import j...

反射Class.forName("a").getMethod("b").invoke(null);接着你的代码写就是Class cls=Class.forName(name[i]);cls.getMethod("b").invoke(null);这是jdk1.5以后的写法,1.4之前稍有不同。

Test t = ("Test") Class.forName("Test"); java是强类型语言,这里首先t的类型你已经指定了是Test类型了,那就直接转成Test类型就行了。 Test t = (Test)Class.forName("Test"); 如果你是想利用某个类型特定的方法,可以通过条件判断来做. Obje...

java里面有一个叫动态代理的实现,可以说是动态生成class文件,在调用java里面的打包命令,应该可以做到。

网站首页 | 网站地图
All rights reserved Powered by www.mshd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com