Scripting javax.script와 타입변환

황제낙엽 2012.01.03 14:58 조회 수 : 62

sitelink1 http://www.cyworld.com/janggetup/3389458 
sitelink2  
sitelink3 http://1 
sitelink4 http://ko 
sitelink5  
sitelink6 http://sitelink1 

한 프로그램 언어를 다른 언어에서 호출할 때에는 한 언어의 데이터 타입이 다른 언어의
데이터 타입에 어떻게 대응되는지 반드시 고려해야 한다. 예를 들어 java.lang.String과
java.lang.Integer를 Bindings 내부의 변수에 연결한다고 가정하자. 자바스크립트 스크립트가
이들 변수를 사용할 때, 이 스크립트가 보게 되는 값의 데이터 타입은 무엇인가? 그리고 만일
스크립트를 평가한 결과가 자바스크립트 불리언 값이라면 eval()메서드에 의해서 반환된
객체의 타입은 무엇이 되는가?

 자바와 자바스크립트의 경위 위의 질문에 대한 답은 꽤 직관적이다.
 자바 객체(기본 데이터 타입의 값을 저장하는 방법은 존재하지 않는다.)를 Bindings객체 안에
 저장할 때 이것은 자바스크립트로 다음과 같이 변환된다.
 
 -Boolean 객체는 자바스크립트 불리언 값으로 변환된다.
 -모든 java.lang.Number 객체는 자바스크립트 숫자로 변환된다.
 -자바 Character와 String 객체들은 자바스크립트 문자열로 변환된다.
 -자바 null값은 자바스크립트의 null값으로 변환된다.
 -다른 모든 자바 객체는 단순히 자바스크립트의 JavaObject 객체로 포장된다.

 
 숫자 변환에 대해서는 자세히 이해하고 넘어가야 할 사항이 있다. 모든 자바 숫자는 자바스크립트
 숫자로 변환된다. 여기에는 Byte나 Short, Integer, Long, Float, Double 타입은 물론

java.math.BigInteger와 java.math.BigDouble 등이 포함된다. Infinity나 NaN과 같이 두 언어에서 모두 지원하는 특수한 부동소수점 값들은 서로 간에

변환된다.