对象以字符串分隔格式

时间:2018-04-04 06:27:26

标签: java java-8

我有不同类型的对象集。 Ex :员工emp,地址adr

这两个类有属性列表

public class Employee{
private Stringname;
private int age;
}

public class Adress {
  private String HouseNo;
  private string Street;
  private string pin;
}

每个属性都分配了2个字符的值 Name (NA), age (AG), HouseNo(HN),Street(ST), pin(PN)

我需要用这些数据构造一个字符串,并用%

分隔

输出:

  

NA%Vidhya%AG%30%HN%80%ST%第一交叉%PN%100100

1 个答案:

答案 0 :(得分:0)

每个类最了解自己的数据,所以我会让每个类负责生成字符串。据我所知,每个字段的两个字符代码对于每个类和成员都是唯一的,并且仅在生成字符串时使用,因此只有类才需要它们。

interface AttributeDescription {
    String generateDescription();
}

public class Employee implements AttributeDescription {
 //members...

   public String generateDescription() {
      return String.format(“NA%%%s%%AG%%%d”, name, age)
   }

然后只需为实现该接口的所有对象调用此方法。

 AttributeDescription object = ...
 String attr = object.generateDescription();

根据要求,我认为它不能超出这个范围。

更新

最好有一个构建器类来构建字符串,以便在类之间获得更统一的行为。这是一个例子

public class AttributeBuilder {
  private builder = new StringBuilder();

  public String getAttribute() {
    return builder.toString();
  }

  public void add(String code, String value) {
    if (value == null) {
      return;
    }
    builder.append(code);
    builder.append(‘%’);
    builder.append(value);
    builder.append(‘%’);
  }

}

然后你还必须以类似的方式为其他数据类型实现add(...)方法。然后可以像

一样使用构建器
public String generateDescription() {
   AttributeBuilder builder = new AttributeBuilder();
   builder.add(“NA”, name);
   builder.add(“AG”, age);

   return builder.getAttribute();
}