Как получить название метода после ClassName…?

103
10 июня 2021, 14:10

У меня есть класс ClassName. Например, я обращаюсь к нему ClassName.a().b(1); Как я могу преобразовать a().b(1) в {"a": "null", "b" : "1"} ?

Answer 1

Вы хотите сделать заполнение данных вашего класса через вызов цепочки методов?

Накидал простенький пример:

class Foo {
    private Map<String, Object> data = new HashMap<>();
    String build() {
        StringBuilder builder = new StringBuilder();
        builder.append("{");
        Iterator<Map.Entry<String, Object>> it =  data.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry entry = it.next();
            builder.append(String.format(
                "\"%s\": \"%s\"", entry.getKey(), entry.getValue()
            ));
            if (it.hasNext()) {
                builder.append(", ");
            }
        }
        builder.append("}");
        return builder.toString();
    }
    Foo a(Object value) {
        data.put("a", value);
        return this;
    }
    Foo a() {
        return a(null);
    }
    Foo b(Object value) {
        data.put("b", value);
        return this;
    }
    Foo c(Object value) {
        data.put("c", value);
        return this;
    }
}

Тестируем:

public static void main(String[] args) {
    System.out.println("text: " + new Foo().a(null).b(1).c("123").build());
    // text: {"a": "null", "b": "1", "c": "123"}
    System.out.println("text: " + new Foo().build());
    // text: {}
    System.out.println("text: " + new Foo().a().build());
    // text: {"a": "null"}
}
READ ALSO
Как записать в OutputStream только четные индексы?

Как записать в OutputStream только четные индексы?

Встал на Вводе/Выводе поток байтНужно написать метод, который принимает InputStream и OutputStream, считывает все байты из inputStream и записывает в OutputStream...

132
Как пройти авторизацию в spring boot REST API из REST client&#39;a?

Как пройти авторизацию в spring boot REST API из REST client'a?

Есть 2 приложения: Первое приложение представляет собой REST API, работа с которым осуществляется через второе приложение с помощью RestTemplate (получение...

116
Почему цикл не прекращается командной break?

Почему цикл не прекращается командной break?

Имеется задание, в котором нужно проверить каждый массив на упорядоченность строго на убываниеЕсли он упорядочен - true

104
Transition числовых меток в bar chart d3

Transition числовых меток в bar chart d3

Я изучаю d3js, и у меня есть вопрос:

125