Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Я полагаю, что Java может говорить с COM, и.NET может представить COM-интерфейсы. Таким образом, это может быть решением для очень легкого веса, которое не требует никакой третьей стороны. Существует также опция использования сокетов для передачи между программами, которые не потребовали бы, чтобы тяжелый экземпляр IIS был установлен на машине.
Я являюсь автором jni4net , межпроцессного моста с открытым исходным кодом между JVM и CLR. Он построен на основе JNI и PInvoke. Код C / C ++ не требуется. Я надеюсь, что это поможет вам.
Если вы изучали собственный интерфейс Java?
В прошлом я занимался написанием библиотеки C, которую можно вызывать как из Java, так и из .NET (а также из COM, языка сценариев NSIS, и другие технологии).
JNI будет работать хорошо, если вы захотите выставить только несколько методов, но он может стать громоздким, если вы захотите, например, представить всю инфраструктуру .NET из-за количества заголовочных файлов и методов-оболочек, которые вы бы сделали нужно создать.
Мы попробовали IKVM в нашей продуктивной среде, но это продолжало отказывать. Мы используем JNBridge, который является коммерческим продуктом, но очень стабилен и работает хорошо в нашей среде ASP.NET.