java.lang.Class与实际的.class文件相同吗?即内容是否等同?
我想通过套接字发送.class,并且想知道是否可以尝试查找和加载实际的.class文件,是否可以只发送java.lang.Class?
精化(如果您需要更多信息,请阅读)
假设我有一个名为SomeObj的Java类。在编译该文件时,将生成一个名为SomeObj.class的文件。
我们还知道,如果我将SomeObj作为类型,则可以通过以下操作获得它的java.lang.Class类型:
Class someObjClss = SomeObj.class;我们知道java.lang.Class实现了可序列化,因此它可以被传输。
那么,java.lang.Class基本上是实际.class文件的对象表示吗?
更新:
假设我已经将.class文件传输到了另一个主机,那么我是否只是使用defineClass()方法来构造类呢?
链接这里
UPDATE2:
此代码确实返回空InputStream。那件事怎么可能?
Class clazz = String.class;
String className = clazz.getName(); System.out.println(className);
URL url = clazz.getResource(className);
if( url != null )
{
String pathName = url.getPath(); System.out.println(className);
}
InputStream inputStream = clazz.getResourceAsStream(className);
if(inputStream != null )
{
System.out.println(inputStream.available());
}发布于 2009-11-20 04:05:00
不是的。java.lang.Class是一个java类。它有自己的.class文件:-) 实例 of java.lang.Class用于表示对象的类,允许您对其执行某些操作(例如,使用反射API)。
序列化与.class文件一点关系都没有--序列化的是对象状态。如果您要序列化Class<MyObject>并将其通过线路发送给一个没有MyObject.class的JVM,那么它仍然不知道MyObject是什么。
为什么您需要手动发送.class通过连线开始?有远程类加载器来处理这个问题。
发布于 2009-11-20 04:34:04
java.lang.Class实例与相应的".class“文件相关,但它们绝不是等价的。
java.lang.Class实例对".class“文件的类型签名进行编码,但不多。因此,尽管可以序列化java.lang.Class,但这样做并不能为您提供足够的资源,以便在另一端实例化相应类的实例。如果您想这样做,您应该发送".class“文件。
发布于 2009-11-20 05:37:41
我认为OP试图识别类文件所在的类路径上的一个文件。请参阅http://asolntsev.blogspot.com/2008/03/how-to-find-which-jar-file-contains.html
https://stackoverflow.com/questions/1768256
复制相似问题