2014-09-05 3 views
0

У меня есть некоторый код:Кастинг URLConnection к HttpURLConnection в Nashorn

var Base64 = java.util.Base64; 
var URL = java.net.URL; 
var HttpURLConnection = java.net.HttpURLConnection; 
var connectionAddress = new URL("http://twitter.com/"); 
var httpConnection = Java.to(
     connectionAddress.openConnection(), 
     Java.type("java.net.HttpURLConnection") 
    ); 

это вызывает исключение: TypeError: sun.net.www.protocol.http.HttpURLConnection: http://twitter.com/ не является объектом

У кого-нибудь есть идеи, как справиться с этим?

+0

Является ли это Java-код или код JavaScript? Почему существует ключевое слово 'var'? – cameron

+0

Это JavaScript. – almendar

ответ

1

Java.to предназначен для преобразования объекта JavaScript в объект Java. В настоящее время он поддерживает преобразование в типы массивов Java, а также java.util.List и java.util.Deque. Он не может использоваться для «броска» между типами Java, и, во всяком случае, это не значимая концепция на динамическом языке. Ваш openConnection() вызов дал вам обратно объект Java типа sun.net.www.protocol.http.HttpURLConnection, который звучит как что-то, что уже подкласс java.net.HttpURLConnection, так что вы должны быть установлены только путем записи

var httpConnection = connectionAddress.openConnection(); 
+0

Я заметил, что могу использовать sun.net напрямую. Только после того, как я прочитал ваш комментарий, это поразило меня тем, что в динамических языках литье не имеет смысла :) Спасибо, что указали это. Это похоже на утиную печать на Python. Если этот метод существует, он будет вызываться. – almendar

Смежные вопросы