Как получить доступ к общедоступному члену класса под названием «свойства»? - PullRequest
0 голосов
/ 04 декабря 2018

Предположим, у меня есть следующий Java-класс из сторонней библиотеки:

public class Itm {
    public final Map<String, String> properties = ['foo': 'bar']
}

со следующим кодом println new Itm().properties Я ожидаю получить карту: [[foo:bar]]

Норезультат:

[class: class Itm]

Я понял, что если я создаю тот же класс в Groovy, но объявляю поле properties без модификатора publicЯ получаю ожидаемый результат.Но у класса, с которым я работаю, есть модификатор доступа public.Таким образом, в этом случае, как я могу получить доступ к полю public с именем properties, а не по умолчанию Groovy getProperties(Object self)?

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете использовать Groovy оператор прямого доступа к полю obj.@field.Этот оператор опускает использование метода get и напрямую обращается к полю объекта.Допустим, у нас есть следующий класс Java:

Itm.java

import java.util.HashMap;
import java.util.Map;

public class Itm {
    public final Map<String, String> properties = new HashMap<String,String>() {{
        put("foo", "bar");
    }};


}

и следующий скрипт Groovy, который его использует:

println new Itm().@properties

Вывод:

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