2013-07-23 22 views
9

Co oznaczają symbole i co mówi metoda Native o metodzie java.io.FileStream.open?Co oznacza <init> i (metoda macierzysta)?

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) 

Odpowiedz

8

Kiedy widzisz <> Init w stacktrace, odnosi się do konstruktora klasy.

Metoda natywna oznacza, że ​​metoda nie jest zaimplementowana w Javie, ale w innym języku niskiego poziomu, takim jak C lub C++. W tym przypadku, open() jest metodą, która wymaga funkcji niskiego poziomu, które różnią się od OS do OS.

1

Natywna metoda jest implementowana w ramach JVM (wirtualna maszyna Java). Programista Java nie powinien martwić się o ich implementację, ponieważ odnoszą się do wewnętrznej pracy maszyny wirtualnej.

Tutaj java.io.FileStream.open() To operacja.

0

Jeśli otworzysz źródło klasy

java.io.FileStream

Można zobaczyć, że ta metoda

prywatny rodzimy void open (String name) rzuca FileNotFoundException;

który nie ma żadnego ciała.

Metoda jest zaimplementowana w "natywnym" kodzie. To znaczy kod, który nie działa w JVM. Zwykle jest napisane w C lub C++.

Metody macierzyste są zwykle używane do łączenia się z wywołaniami systemowymi lub bibliotekami napisanymi w innych językach programowania.

Aby uzyskać źródło natywnych metod, prawdopodobnie musiałbyś użyć JDk o otwartym kodzie źródłowym, jak OpenJDK