Я пытаюсь использовать рефлексию для вызова моего java-метода из класса scala.
Я ссылался на этот пост. scala: в чем разница между Any и AnyRef? и мой "arg", переданный из Scala, является списком [AnyRef]
Scala
val arg: List[AnyRef] = List ("a",Object B)
val clazz = classLoader.loadClass("com.project.Hello")
val clazzObject = clazz.newInstance()
val myMethod = clazz.getDeclaredMethod("HelloJava", classOf[List[AnyRef]])
myMethod.setAccessible(true)
val response = myMethod.invoke(clazzObject, arg)
Java
package com.project;
public class Hello {
public static String HelloJava (List<Object> arg) {
}
При вызове этого метода я получаю исключение ниже - java.lang.NoSuchMethodException: com.Project.Hello (scala.collection.immutable.List) в java.lang.Class.getDeclaredMethod
Однако вызов класса scala из scala прекрасно работает с той же сигнатурой метода.
Может ли кто-нибудь помочь в разъяснении концепции и скажите, что я делаю неправильно? Как я могу решить эту проблему, прежде всего, путем изменения класса Java (если нет, то изменения в классе Scala).Я посмотрел и другие посты, в которых говорится об использовании javaconversions и javaconverters, но это тоже не помогло.