java - 如何将 Scala 特征转换为 Java 类?

标签 java scala

我尝试将一些 Scala 源代码转换为 Java 源代码。但我面临一些麻烦。以下是 Scala 源代码。

trait Reader {
  def read(name: String): String = {
    //some codes are here.....
  }
}

trait FileInputBase {
  def getFormat(path: String): String = {
    //some codes are here.....
  }
}

case class FileStreamInput(name: String, path: String) extends Reader with FileInputBase {
  def read(name: String): String = {
    //some codes are here.....
  }

  var format = getFormat("joseph") 
}

我将这些 Scala 代码转换为 Java 源代码,如下所示,

class Reader {
  public String read(String name) {
    // some java codes are here
  }
}

interface FileInputBase {
  public String getFormat(String path) {
    // some java codes are here
  }
}

我创建了 java 类

public class FileStreamInput extends Reader implements FileInputBase {
  ....
}

但是这些Java代码根本不起作用。我是 Scala 语言的初学者。

最佳答案

你可以尝试这样的事情:

public interface Reader {

  default String read(String name) {
    return "reading from " + name;
  }

}

public interface FileInputBase {

  default String getFormat(String path) {
    return "Format of " + path;
  }

}


public class FileStreamInput implements Reader, FileInputBase {

  private String path;

  private String name;


  public FileStreamInput(String path, String name) {
    super();
    this.path = path;
    this.name = name;
  }

  public String read(String name) {
    return "FileStreamInput: reading from " + name;
  }

  public String getPath() {
    return path;
  }

  public void setPath(String path) {
    this.path = path;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getFormat() {
    return getFormat(path);
  }

  public static void main(String[] args) {
    FileStreamInput input = new FileStreamInput("Alice", "/home/alice");
    System.out.println("format: " + input.getFormat());
  }

}

关于java - 如何将 Scala 特征转换为 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57735364/

相关文章:

css - 加特林 - 检查分割值

scala:类型被推断为 `Any` ;这可能表明存在编程错误

java - 解码 base64 图像并存储在内存不足的磁盘上(使用 java)

java - ClassNotFoundException:对 PMD 规则集使用自定义 java 规则

java - 什么时候使用 AtomicReference (Java)?真的有必要吗?

java - 如何在另一个方法中设置setContentView?

java - 图像大小调整: original color has been changed after the resize

java - Scala 中的 BigDecimal

scala - 为什么(复制)附加到 Scala 中的 Seq 被定义为 :+ and not just + as in Set and Map?

string - Scala StringLike split 方法为前导空格创建额外的双引号