2015-01-19 2 views
1

Я использовал структуру JNI4NET для вызова кода .Net с Java. JNI4NET создал прокси-класс для .Net-кода. Один из методов принимает system.Object как входной параметр.java.lang.String нельзя передать в system.Object

Я хочу отправить значение String в качестве входного данных для этого метода. Я написал приведенный ниже код для этого:

 String s = "test"; 
     Object b = s; 
     system.Object object = (system.Object) b; 

Передача этого объекта в качестве метода ввода для прокси. Вышеприведенный код генерирует исключение среды выполнения java.lang.String не может быть передано в system.Object. Любая помощь или указатели будут полезны.

+2

Что такое 'system.Object' в любом случае? –

+0

.Net использует system.Object по сравнению с java.lang.Object в Java. – Sanjay

ответ

2

java.lang.String может быть приведен к java.lang.Object (хотя нет никаких причин, чтобы бросить его - вы можете просто назначить его на Object ссылки, как вы делаете в - Object b = s;), не system.Object.

Я немного искал. Похоже, что это может помочь:

String s = "test"; 
system.String b = new system.String(s); 
system.Object object = b; 

Поскольку system.String является подклассом system.Object, вы можете передать его в ваш метод test.

+0

Спасибо за быстрый ответ Эран. В этом случае, как передать значение String в параметр system.Object? – Sanjay

+0

@Sanjay Что такое 'system.Object'? Это класс, который вы создали? Какие конструкторы у него есть? – Eran

+0

Его эквивалентный метод. Net, созданный инфраструктурой JNI4NET в Java. Ниже приведен синтаксис - общедоступный булевский тест (java.lang.String AVariableFullName, system.Object Value); – Sanjay