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])
打印以下内容:
(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])
从该方法返回 a 时,每当我尝试使用它时都会收到以下错误:
java.lang.ClassCastException: com.intellij.lang.javascript.psi.ecmal4.impl.JSClassImpl cannot be cast to com.intellij.lang.javascript.psi.ecmal4.impl.JSClassImpl
我觉得它与类加载器有关。
来自 IntelliJ 支持论坛:
您应该注意插件有自己的 ClassLoader。
http://devnet.jetbrains.com/message/5259550;jsessionid=13C3F98277311F5EFFFAFD3135B42CEA