Pergunta

Java.lang.class é o mesmo que o arquivo .class real? ou seja, o conteúdo é equivalente?

Quero enviar a classe. Classe sobre o soquete e queria saber se, em vez de tentar encontrar e carregar o arquivo .class real, se eu pudesse transmitir o java.lang.class?

Elaboração (Leia se quiser mais informações)

Suponha que eu tenha uma aula de java chamada algumbj. Quando este arquivo é compilado, um arquivo chamado algumbj.class será gerado.

Também sabemos que, se eu tiver algum tipo de tipo, poderíamos obter seu tipo java.lang.class fazendo:

Class someObjClss = SomeObj.class;

Conhecemos java.lang.class implementos serializáveis, portanto, pode ser transmitido.

Então, java.lang.class é basicamente a representação do objeto do arquivo .class real?

ATUALIZAR:

Supondo que eu transmitisse o arquivo .class para outro host, eu apenas uso o método DefLeClass () para construir a classe de volta?

Link aqui

Update2:

Este código retorna NULL InputStream. Como isso é possível?

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

Solução

Não. java.lang.Class é uma aula de java. Tem seu próprio arquivo .class :-) um instância do java.lang.Class é usado para representar Classe do seu objeto, permitindo que você execute determinadas operações (por exemplo, use a API de reflexão) nele.

A serialização não tem nada a ver com o arquivo .class. estado de objeto Isso é serializado. Se você fosse serializar Class<MyObject> e envie isso sobre o fio para uma JVM que não possui MyObject.class, ainda não saberia o que é o MyObject.

Por que você precisa manualmente Envie. Classifique sobre o fio para começar? Existem carregadores de classe remotos para lidar com isso.

Outras dicas

UMA java.lang.Class A instância está relacionada a um arquivo ".class" correspondente, mas eles não são de forma alguma equivalentes.

o java.lang.Class A instância codifica a assinatura do tipo para um arquivo ".class", mas não muito mais. Então, embora um java.lang.Class Pode ser serializado, isso não fornece o suficiente para permitir que uma instância da classe correspondente seja instanciada na outra extremidade. Se você quiser fazer isso, deve enviar o arquivo ".class".

Eu acho que o OP está tentando identificar um arquivo no caminho de classe no qual o arquivo de classe existe. Ver http://asolntsev.blogspot.com/2008/03/how-to-find-which-jar-file-contains.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top