常规的Java SE标准库的API的话,没有办法达到题主的需求。
题主的需要本质上说就跟Ruby的ObjectSpace一样要能够遍历当前JVM内的所有活的对象实例,并对它们做 *** 作。Java的标准库没有提供遍历整个Java堆中的所有活的Java对象实例的方法。
通过JVMTI倒是有办法遍历出所有活的Java对象实例的,但那是一个主要用于支持调试器的API,并不适合普通Java程序自己对自己 *** 作使用。
java中创建对象时其实不是通过类直接创建的,如果你想要使用Test类,在java中JVM首先加载Testjava文件的字节码文件Testclass(也就是编译后的文件),当JVM(java虚拟机)加载字节码文件后,自动为该类创建自己的class对象,在通过class对象创建你以后要创建的对象\x0d\例如:Test t1=new Test(); Test t2=new Test(); 我们都知道java中 == 是比较两个对象的内存地址,t1getClass()==t2getClass();返回是true,证明他们是一个class对象创建出来的。那么可Class对象的意义就是标志一个类了,Class类为我们提供了很多方法,比如反射技术常用到的ClassforName("包类");这样可以获取一个类的Class对象。\x0d\例如:Test类在orgabc这个包里,那么可以用ClassforName("orgabcTest");这样就返回一个Test类的class对象,拿到这个对象接下来可以做很多事,调用这个类的方法,属性,构造方法等,具体你去研究下反射技术。如果有不懂在问我。\x0d\针对一种数据类型的Class转换,比如Stringclass,intclass,类class等\x0d\你提出的问题Class参数,就是让你传一种Class对象进去。比如Stringclass,intclass,类class等\x0d\Testclass==t1getClass();返回true,怕你有误解,说明一下类和对象都可以获取class对象的。并且这个对象是一个对象,因为一个类对应自己的class对象。
1、ogetClass()和Objectclass这两个的意思都是一样的。。。指的是获取到Object的类名。。。2、声明变量o,你要想获取到它所属的Class肯定要采用getClass()方法的啦。。。这样就获取到所属的类,然后在加上getName()就可以获取到类的名字。。。3、通过类名Object直接调用静态变量class就可以直接获取相应的类的信息了。。。4、Class这个类我们平时在Java编程中使用得比较少。。。最常见的就是在反射中。。。 我最好在说说获取Class实例的方法:1)利用对象调用getClass()方法获取该对象的Class实例。2)使用Class类的静态方法forName(),用类的名字获取一个Class实例。3)运用class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用TYPE来获取相对应的基本数据类型的Class实例。
以上就是关于如何获取JVM内已经存在的某个Class的实例全部的内容,包括:如何获取JVM内已经存在的某个Class的实例、java 语言Class类的作用,怎么使用、Object.class的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)