Как & ldquo; использовать & rdquo; местный & ldquo; defs & rdquo; в SVG

У меня была немного другая проблема. Вместо того, чтобы увеличивать локальную переменную в forEach, мне нужно было назначить объект локальной переменной.

Я решил это, определив частный класс внутреннего домена, который обертывает и список, который я хочу перебирать (countryList ) и вывод, который я надеюсь получить из этого списка (foundCountry). Затем, используя Java 8 «forEach», я перебираю по полю списка, и когда найден объект, который я хочу, я назначаю этот объект в поле вывода. Таким образом, это присваивает значение полю локальной переменной, не меняя локальную переменную. Я считаю, что, поскольку локальная переменная сама по себе не изменяется, компилятор не жалуется. Затем я могу использовать значение, которое я захватил в поле вывода, вне списка.

Объект домена:

public class Country {

    private int id;
    private String countryName;

    public Country(int id, String countryName){
        this.id = id;
        this.countryName = countryName;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getCountryName() {
        return countryName;
    }

    public void setCountryName(String countryName) {
        this.countryName = countryName;
    }
}

Объект обертки:

private class CountryFound{
    private final List<Country> countryList;
    private Country foundCountry;
    public CountryFound(List<Country> countryList, Country foundCountry){
        this.countryList = countryList;
        this.foundCountry = foundCountry;
    }
    public List<Country> getCountryList() {
        return countryList;
    }
    public void setCountryList(List<Country> countryList) {
        this.countryList = countryList;
    }
    public Country getFoundCountry() {
        return foundCountry;
    }
    public void setFoundCountry(Country foundCountry) {
        this.foundCountry = foundCountry;
    }
}

Операция итерации:

int id = 5;
CountryFound countryFound = new CountryFound(countryList, null);
countryFound.getCountryList().forEach(c -> {
    if(c.getId() == id){
        countryFound.setFoundCountry(c);
    }
});
System.out.println("Country found: " + countryFound.getFoundCountry().getCountryName());

Вы можете удалить метод класса-оболочки «setCountryList ()» и сделать поле «countryList» окончательным, но я не получил ошибки компиляции, оставляя эти данные как есть.

30
задан Machavity 19 September 2018 в 00:07
поделиться

2 ответа

SVG-файл с несколькими одинаковыми идентификаторами недопустим для http://www.w3.org/TR/SVG/struct.html#IDAttribute

. идентификаторы уникальны или перемещают SVG в отдельные файлы и ссылаются на них с помощью тегов <object> или <iframe>.

10
ответ дан Robert Longson 19 September 2018 в 00:07
поделиться

Я создал инструмент для рандомизации идентификаторов определений, чтобы избежать этой проблемы с помощью встроенного svg, ссылающегося на тот же #id, надеюсь, он будет полезен для кого-то еще. http://hugozap.com/randomize_svg_def_ids.html

1
ответ дан Hugo Zapata 19 September 2018 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: