def getParentOfType[T <: PsiElement](element: PsiElement, aClass: Class[T], strict: Boolean = false): Option[T] = {
System.out.println(aClass.isInstance(element), aClass, element.getClass)
...
getParentOfType(el, classOf[JSClassImpl])
Печатает следующие:Scala сравнение типа не работает
(false,class com.intellij.lang.javascript.psi.ecmal4.impl.JSClassImpl,class com.intellij.lang.javascript.psi.ecmal4.impl.JSClassImpl)
Не следует ли это оценить, верно?
На данный момент временное решение:
System.out.println(aClass.toString == element.getClass.toString)
Это кажется смешным. Я пробовал все!
А потом, когда я возвращаю Option(el.asInstanceOf[T])
от метода, я получаю следующее сообщение об ошибке, когда я пытаюсь использовать его:
java.lang.ClassCastException: com.intellij.lang.javascript.psi.ecmal4.impl.JSClassImpl cannot be cast to com.intellij.lang.javascript.psi.ecmal4.impl.JSClassImpl
У меня есть ощущение, что что-то делать с загрузчиков классов.
ClassCastException when casting to the same class
От форумах поддержки IntelliJ:
следует отметить, что модули имеют свои собственные ClassLoader.
http://devnet.jetbrains.com/message/5259550;jsessionid=13C3F98277311F5EFFFAFD3135B42CEA
Возможный дубликат http://stackoverflow.com/questions/9642859/scala -generic-abstract-type-ignored-for-isinstanceof –
Пробовал 'System.out.println (manifest.erasure.isInstance (element))' из вопроса, который не работал. – vaughan