【问题标题】:Java inherited class in Scala results in Type mismatch errorScala中的Java继承类导致类型不匹配错误
【发布时间】:2019-05-17 18:47:04
【问题描述】:

我是 Scala 新手,所以请注意我的代码中的任何错误。我正在尝试重新设计一些已提供给我的 Scala 代码。当我尝试使用 Java 继承时,我得到类型不匹配;发现在 Eclipse 中突出显示的错误。

我正在使用 sbt 生成 eclipse 工件,我可以在 eclipse 中导入项目。下面给出了错误代码。

界面:

public interface InnerClassGen {

    static public interface IFactory {
      InnerInter innerInt = null;
      /** A String giving the canonical value of symbol. */
        //@ pure
        Integer value();
        @Override
        String toString();
    }
}

public class InnerClassImpl implements InnerClassGen {

   static public class Node implements IFactory{

      @Override
      public Integer value() {
        // TODO Auto-generated method stub
        return null;
      }
   }
}

相关的 Scala 文件:

object SMTExprVisitor {
   protected var NODE: InnerClassGen.IFactory = new InnerClassImpl.Node()
}

class SMTExprVisitor{
.....
}

我想知道我哪里出错了。如果有的话,谁能给我指出相关链接?

【问题讨论】:

  • 错误文本是什么(总是在询问编译错误时发布!)?它是否准确地发布到var NODE 行?是在 SBT 中编译还是仅在 IDE 中编译时出现错误?
  • 我可以在 sbt 中编译代码。只有 Eclipse 将代码突出显示为错误 - 应该说清楚。 Eclipse 中的确切错误文本是“类型不匹配;发现:InnerClassImpl.Node required: InnerClassGen.IFactory.
  • 这意味着您在任何地方都不会出错,并且代码可以正常工作。它应该被报告为一个 Scala IDE 错误(在检查它还没有之后)。

标签: java scala inheritance


【解决方案1】:

通常,您应该始终将 SBT(或直接由 scalac)产生的编译错误视为真实错误。由于语言的复杂性以及与编译器的有限集成,Scala IDE 既可以在没有错误的情况下将代码高亮显示为有错误,也可以找不到确实存在的错误。

虽然由于使用扩展了主 Scala 编译器的 "presentation compiler",Eclipse 在这方面应该比 IDEA/Android Studio 更好,但显然你仍然遇到了它无法处理的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 2020-08-23
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多