Pregunta

Es java.lang.Class el mismo que el archivo .class real? es decir, es el equivalente contenido?

Quiero enviar el .class sobre zócalo, y se preguntaba si en lugar de tratar de encontrar y cargar el archivo .class real, si tan sólo pudiera transmitir el java.lang.Class lugar?

Elaboración (leer si quieres más información)

Supongamos que tengo una clase Java llamada someObj. Cuando se compila este archivo, un archivo llamado SomeObj.class se generará.

También sabemos que si tengo someObj como un tipo, podríamos obtener su tipo java.lang.Class haciendo:

Class someObjClss = SomeObj.class;

Sabemos java.lang.Class implementa Serializable, por lo que se puede transmitir.

Así es java.lang.Class básicamente la representación de objetos del archivo .class real?

ACTUALIZACIÓN:

Suponiendo que he transmitido el archivo .class a otro host, no sólo tiene que utilizar el método defineClass () para construir la clase de nuevo?

aquí

Update2:

Este código hace rendimientos InputStream nula. ¿Cómo es posible?

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());
}
¿Fue útil?

Solución

No. java.lang.Class es una clase Java. Tiene su propio archivo .class :-) Un ejemplo de java.lang.Class se utiliza para representan clase del objeto que le permita realizar ciertas operaciones (por ejemplo, el uso de la API de reflexión) en él .

La serialización no tiene nada que ver con el archivo .class en absoluto - es estado del objeto que se serializado. Si se va a serializar Class<MyObject> y enviarla a través del cable a una JVM que no tiene MyObject.class, todavía no se sabe qué es MiObjeto.

¿Por qué necesita a manualmente enviar .class sobre el alambre para empezar? Hay cargadores de clases a distancia para hacer frente a esto.

Otros consejos

Una instancia java.lang.Class está relacionada con un archivo correspondiente ".class", pero son de ninguna manera equivalente.

La instancia java.lang.Class codifica la firma de tipo de archivo ".class", pero no mucho más. Así, aunque un java.lang.Class se puede serializar, al hacerlo no proporcionar suficiente para permitir que una instancia de la clase correspondiente a una instancia en el otro extremo. Si quieres hacer eso, usted debe enviar el archivo ".class".

Creo que el PO está tratando de identificar un archivo en la ruta de clase en el que existe el archivo de clase. Ver http: //asolntsev.blogspot .com / 2008/03 / how-to-find-cual-jar-file-contains.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top