Domanda

È java.lang.Class lo stesso del file .class reale? cioè è l'equivalente di contenuti?

Voglio inviare il .class sopra lo zoccolo, e si chiedeva se, invece di cercare di trovare e caricare il file .class reale, se solo potessi trasmettere il java.lang.Class invece?

Elaborazione (leggere se volete maggiori informazioni)

Supponiamo che io sono una classe Java chiamata someObj. Quando questo file viene compilato, un file chiamato SomeObj.class verrà generato.

Sappiamo anche che se ho someObj come un tipo, siamo riusciti a ottenere il suo tipo java.lang.Class facendo:

Class someObjClss = SomeObj.class;

Sappiamo java.lang.Class implementa Serializable, così può essere trasmessa.

Così è java.lang.Class fondamentalmente la rappresentazione dell'oggetto del file .class reale?

UPDATE:

Supponendo che ho trasmesso il file .class ad un altro ospite, non mi basta usare il metodo defineClass () per costruire la classe di schiena?

qui

UPDATE2:

Questo codice non restituisce InputStream nullo. Come è possibile?

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());
}
È stato utile?

Soluzione

No. java.lang.Class è una classe Java. Ha un proprio file .class :-) Un istanza di java.lang.Class viene utilizzato per rappresentare di classe del vostro oggetto che consente di eseguire determinate operazioni (ad esempio l'uso di riflessione API) su di esso .

La serializzazione non ha nulla a che fare con file .class a tutti - è Stato oggetto che viene serializzato. Se si dovesse serializzare Class<MyObject> e inviare che oltre il filo ad una JVM che non ha MyObject.class, ancora non saprebbe cosa MyObject è.

Perché avete bisogno di manualmente Invia .class oltre il filo per cominciare? Ci sono caricatori di classe a distanza per far fronte a questo.

Altri suggerimenti

Un esempio java.lang.Class è connesso ad un corrispondente file ".class", ma sono affatto equivalenti.

L'istanza java.lang.Class codifica la firma tipo per un file ".class", ma non molto di più. Quindi, anche se un java.lang.Class può essere serializzato, così facendo non fornisce voi con sufficiente per consentire un'istanza della classe corrispondente da un'istanza all'altra estremità. Se si vuole fare questo, si dovrebbe essere l'invio del file ".class".

Credo che il PO sta cercando di individuare un file sul classpath in cui si trova il file di classe. Vedere http: //asolntsev.blogspot .com / 2008/03 / how-to-find-che-jar-file-contains.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top