java 调用静态hasmap,用于静态值的Java Enum或HashMap

我总是在这里使用枚举,因为枚举有天生的顺序,而地图则没有.

通过使用枚举,您可以从枚举本身生成CTL文件,并使用枚举值作为工厂来填充csv文件.

class MyObj {

final String foreName;

final String surname;

public MyObj(String foreName, String surname) {

this.foreName = foreName;

this.surname = surname;

}

public String getForeName() {

return foreName;

}

public String getSurname() {

return surname;

}

}

enum Column {

Forename {

@Override

String fromMyObj(MyObj it) {

return it.getForeName();

}

},

Surname {

@Override

String fromMyObj(MyObj it) {

return it.getSurname();

}

},;

abstract String fromMyObj(MyObj it);

static String asSelectStatement(Set columns, String tableName) {

return join(columns, ",", "SELECT ", " FROM " + tableName);

}

static String asCSVHeader(Set columns) {

return join(columns, ",");

}

static String asCSV(Set columns, MyObj it) {

return join(columns, (Column a) -> a.fromMyObj(it), ",");

}

private static String join(Set columns, String between) {

return join(columns, new StringJoiner(between));

}

private static String join(Set columns, String between, String prefix, String suffix) {

return join(columns, new StringJoiner(between, prefix, suffix));

}

private static String join(Set columns, StringJoiner joined) {

return join(columns, (Column a) -> a.name(), joined);

}

private static String join(Set columns, Function as, String between) {

return join(columns, as, new StringJoiner(between));

}

private static String join(Set columns, Function as, String between, String prefix, String suffix) {

return join(columns, as, new StringJoiner(between, prefix, suffix));

}

private static String join(Set columns, Function as, StringJoiner joined) {

for (Column c : columns) {

joined.add(as.apply(c));

}

return joined.toString();

}

// Also simple to auto-populate prepared statements, build INSERT statements etc.

}

public void test() {

Set columns = EnumSet.of(Column.Forename, Column.Surname);

System.out.println("As Select: " + Column.asSelectStatement(columns, "MyTable"));

System.out.println("As CSV Header: " + Column.asCSVHeader(columns));

MyObj it = new MyObj("My Forename", "My Surname");

System.out.println("As CSV: " + Column.asCSV(columns, it));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值