Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类似Scala的Java静态工厂类_Java_Scala - Fatal编程技术网

类似Scala的Java静态工厂类

类似Scala的Java静态工厂类,java,scala,Java,Scala,我已经用Scala编写了一个示例代码,我需要转换成Java,但我有点困惑如何在Java中使用这种模式 在Scala,我有: object Writer { val options = new scala.collection.mutable.HashMap[String, String] def a: Option[String] = options.get("a") def b: Option[String] = options.get("b") def c: Option[S

我已经用Scala编写了一个示例代码,我需要转换成Java,但我有点困惑如何在Java中使用这种模式

在Scala,我有:

object Writer {
  val options = new scala.collection.mutable.HashMap[String, String]
  def a: Option[String] = options.get("a")
  def b: Option[String] = options.get("b")
  def c: Option[String] = options.get("c")

  def option(key: String, value: String): Writer.type = {
    options += (key -> value)
    this
  }

  def write() ={
    println(a.getOrElse("Z"))
    println(b.getOrElse("Z"))
    println(c.getOrElse("Z"))
  }

}
我可以在通过或不通过选项的情况下运行:


如何将其转换为Java?

Scala对象类似于Java中的singleton对象:

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

public class Writer {

    private Writer(){}

    private static Writer instance;

    public static Writer getInstance() {
        if (instance == null) {
            instance = new Writer();
        }
        return instance;
    }

    public Map<String, String> options = new HashMap<>();

    public Optional<String> a() {
        return Optional.ofNullable(options.get("a"));
    }

    public Optional<String> b() {
        return Optional.ofNullable(options.get("b"));
    }

    public Optional<String> c() {
        return Optional.ofNullable(options.get("c"));
    }

    public Writer option(String key, String value) {
        options.put(key, value);
        return this;
    }

    public void write() {
        System.out.println(a().orElse("Z"));
        System.out.println(b().orElse("Z"));
        System.out.println(c().orElse("Z"));
    }

    public static void main(String[] args) {
        Writer.getInstance()
                .option("a", "A")
                .option("b", "B")
                .option("c", "C")
                .write();

        Writer.getInstance().write(); // same output as above
    }
}
import java.util.HashMap;
导入java.util.Map;
导入java.util.Optional;
公开课作家{
专用编写器(){}
私有静态编写器实例;
公共静态编写器getInstance(){
if(实例==null){
instance=newwriter();
}
返回实例;
}
publicmap options=newhashmap();
公共可选a(){
返回可选的.ofNullable(options.get(“a”));
}
公共可选b(){
返回可选的.ofNullable(options.get(“b”));
}
公共可选c(){
返回可选的.ofNullable(options.get(“c”));
}
公共编写器选项(字符串键、字符串值){
期权。看跌期权(关键,价值);
归还这个;
}
公共空写(){
System.out.println(a().orElse(“Z”));
System.out.println(b().orElse(“Z”));
System.out.println(c().orElse(“Z”));
}
公共静态void main(字符串[]args){
Writer.getInstance()
.期权(“a”、“a”)
.选择权(“b”、“b”)
.选择权(“c”、“c”)
.write();
Writer.getInstance().write();//与上述输出相同
}
}

您尝试过什么?你遇到了什么问题?你做了什么来解决这些问题?
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

public class Writer {

    private Writer(){}

    private static Writer instance;

    public static Writer getInstance() {
        if (instance == null) {
            instance = new Writer();
        }
        return instance;
    }

    public Map<String, String> options = new HashMap<>();

    public Optional<String> a() {
        return Optional.ofNullable(options.get("a"));
    }

    public Optional<String> b() {
        return Optional.ofNullable(options.get("b"));
    }

    public Optional<String> c() {
        return Optional.ofNullable(options.get("c"));
    }

    public Writer option(String key, String value) {
        options.put(key, value);
        return this;
    }

    public void write() {
        System.out.println(a().orElse("Z"));
        System.out.println(b().orElse("Z"));
        System.out.println(c().orElse("Z"));
    }

    public static void main(String[] args) {
        Writer.getInstance()
                .option("a", "A")
                .option("b", "B")
                .option("c", "C")
                .write();

        Writer.getInstance().write(); // same output as above
    }
}