Как скрыть имя свойства класса дочерней модели в java отражении - PullRequest
0 голосов
/ 28 января 2019

У меня очень большой класс модели, я хочу создать метод toString для этой модели.Но в этой модели много полей, поэтому я пытаюсь использовать общую модель и отражение Java.Но вывод включает в себя имя поля подмодели, возможно ли это удалить?

У меня есть 1 класс абстрактной модели, как показано ниже:

import java.lang.reflect.*;

public abstract class CommonEntity {

  public String getInsertString() {
    StringBuilder sb = new StringBuilder();
    try {
      Field[] fields = this.getClass().getDeclaredFields();

      for (Field field : fields) {

        field.setAccessible(true);        

        Object value = field.get(this);
        if (value != null) {          
          sb.append("\"" + value.toString() + "\",");
        }

      }

    } catch (Exception e) {
      System.out.println(e);
    }
    return sb.toString();
  }

}

И 2 другие модели расширяют это общее

test:

@Data
public class test extends CommonEntity {
  private String name;
  private String last;
  private test2 test;
}

test2:

@Data
public class test2 extends CommonEntity {
  private String name2;
  private String last2;
}

И основной класс:

public static void main(String[] args) {
    test a = new test();
    a.setName("1");
    a.setLast("2");

    test2 b = new test2();
    b.setLast2("3");
    b.setName2("4");
    a.setTest(b);

    System.out.println(a.getInsertString());

}

Консольный вывод:

"1","2","test2(name2=4, last2=3)",

Мое ожидание:

"1","2","4","3,

Можно ли удалить

test2(name2

и

last2

в выводе.

1 Ответ

0 голосов
/ 28 января 2019

Эта часть вывода поступает из toString, автоматически генерируемого lombok's @Data.Если вам это не нужно, реализуйте свою собственную функцию toString.

Однако у меня есть опасения по поводу этой реализации, каково предполагаемое использование получающегося строкового представления?Из твоей формулировки я беспокоюсь, что ты намереваешься использовать его как часть SQL-запроса, который опрометчив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...