Java создать имя файла с объектом, отправившего шаблон - PullRequest
0 голосов
/ 02 июня 2018

Я работаю с внешними файлами конфигурации, такими как application.yml в Springboot, программа копирует файлы и переименовывает файлы, но если мне нужен другой шаблон, то имя файлов thengo для изменения в коде.

Давайте предположим следующий код:

public class Pet {

private chain name;
private rope bread;
private chain size;
PrivateVar private chain;

Getters and Setters ....

}

И я создаю имена файлов с этим кодом:

Pet pet = getPet();
String fileName = String.format ("% s_% s_% s_% s", pet.getName (), pet.getBread (), pet.getSize (), pet.getOtherVar ());

Это проблема, она не динамическая.

Мне кажется, что в моем файле конфигурации я могу написать шаблон и отправить объект в качестве входных данных, а покровителю организовать имя.

String.format (pattern_from_the_file_config, pet);

Могу ли я сделать это или есть какой-либо способсделать это?

Ответы [ 3 ]

0 голосов
/ 03 июня 2018

Как упомянул Peteef, такой трюк потребует Java Reflection API использования.Если вам известно о потенциальных проблемах, рассмотрите следующий фрагмент кода:

//...
    String fileName = getFileName(classNameFromConfigFile);
//...

String getFileName(String className) throws Exception {
    Class<?> clazz = Class.forName(className);
    StringBuilder nameBuilder = new StringBuilder();
    String nameSeparator = "_";
    for(Field field : clazz.getDeclaredFields()) {
        nameBuilder.append(nameSeparator).append(field.getName());
    }
    return nameBuilder.toString();
  }
0 голосов
/ 03 июня 2018

Почему вы просто не переопределяете метод ToString ()?

Согласно вашему примеру:

  @Override
  public String toString() {
    return String.format ("% s_% s_% s_% s", pet.getName (), pet.getBread (), pet.getSize (), pet.getOtherVar ());
  }

это изменится динамически.

0 голосов
/ 02 июня 2018

Подумайте об использовании метода (в этом примере Pet's) для указания и возврата имени файла.

Если он все еще слишком жестко задан для вас, возможно, может помочь отражений .

Java Reflection API

Но это действительно не рекомендуется, опасно и должно использоваться только при необходимости.Подумайте дважды, прежде чем использовать его.Поступая так, вы теряете контроль над правильностью кода (например, если вы допустили ошибку, введя неправильное поле класса / имя метода в файле конфигурации).

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