public class Client {
public native int stringToInt(String str);
public static void main(String[] args) {
Client client = new Client();
System.out.println("15 is " + client.stringToInt("15"));
System.out.println("-15 is " + client.stringToInt("-15"));
System.out.println("1a is " + client.stringToInt("1a"));
}
static {
System.loadLibrary("findstaticmethod");
}
}
컴파일하고 실행한다.
$ javac Client.java
$ java Client
15 is 15
-15 is -15
마지막 실행은 아래처럼 예외가 발생한다. 1a 문자열을 정수 숫자로 변환할 수 없기 때문이다. 네이티브 레이어에서 예외를 처리할 수 있는데 후에 살펴볼 것이다.
Exception in thread "main" java.lang.NumberFormatException: For input string: "1a"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at Client.stringToInt(Native Method)
at Client.main(Client.java:10)
정적메서드를 호출하는 CallStatic...로 시작하는 함수는 여러가지 종류가 있다. 반환 타입과 인자 전달 방법에 따라 나뉜다. 여기서는 하나의 값만 반환하고 하나의 값만 인자로 전달하는 함수만 살펴본다. 더 자세한 목록은 를 참고한다. CallStaticMethod() 형식으로 이름을 가지며 목록은 아래와 같다.