类似Scala的Java静态工厂类
我已经用Scala编写了一个示例代码,我需要转换成Java,但我有点困惑如何在Java中使用这种模式 在Scala,我有:类似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
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
}
}