2013-07-23 28 views
9

Cosa indicano i simboli e cosa dice il metodo (metodo nativo) sul metodo java.io.FileStream.open?Che cosa significa <init> e (metodo nativo)?

Exception in thread "main" java.io.FileNotFoundException: line23 (No such file or directory) 
at java.io.FileInputStream.open(Native Method) 
at java.io.FileInputStream.<init>(FileInputStream.java:135) 
at java.io.FileInputStream.<init>(FileInputStream.java:95) 
at java.io.FileReader.<init>(FileReader.java:64) at Helper.readFile(Foo5.java:74) 
at Bar2.main(Bar2.java:32) 

risposta

8

Quando vedi < init> in uno stacktrace, si riferisce al costruttore della classe.

Il metodo nativo indica che il metodo non è implementato in Java, ma in un altro linguaggio di basso livello come C o C++. In questo caso, open() è un metodo che richiede funzioni di basso livello, diverse da sistema operativo a sistema operativo.

1

Il metodo nativo è implementato all'interno di JVM (Java Virtual Machine). Lo sviluppatore Java non dovrebbe preoccuparsi della loro implementazione in quanto si riferiscono al funzionamento interno della macchina virtuale.

Qui è disponibile l'operazione java.io.FileStream.open().

0

Se si apre l'origine della classe

java.io.FileStream

si può vedere che questo metodo

private void nativo aperta (String name) throws FileNotFoundException;

che non ha alcun corpo.

Il metodo è implementato nel codice "nativo". Cioè, codice che non viene eseguito nella JVM. In genere è scritto in C o C++.

metodi nativi di solito vengono utilizzati per interfacciarsi con le chiamate di sistema o le librerie scritte in altri linguaggi di programmazione.

Per ottenere l'origine dei metodi nativi, probabilmente dovresti usare qualche JDk open source come OpenJDK