Java — когда установлена ​​переменная-член, как установить другие члены

У меня есть следующий устаревший код, как показано ниже. Мне интересно, есть ли способ установить BikeName и BikeModel, когда устанавливается BikeGroup? По сути, поскольку пользователь устанавливает BikeGroup, как мы можем автоматически установить версию Foo для BikeName и BikeModel? Без использования конструктора для установки значений. Я устанавливаю BikeGroup с помощью валидатора (пружинная структура)... поэтому я не могу использовать конструктор или установщик для установки значений.

Class Foo{
    private BikeGroup; // 1. when this is set
    private String bikeName; // 2. set this with value in BikeGroup
    private String bikeModel; // 3. and set this with value in BikeGroup
    //getters/setters
}

Class BikeGroup{
    private String bikeName;
    private String bikeModel;
    //getters/setters
}

person hyperstack    schedule 16.07.2019    source источник
comment
Классы не объявляются в круглых скобках, а имена переменных должны начинаться с символа нижнего регистра. Кроме того, когда эта переменная установлена ничего не значит. На данный момент нет возможности установить что-либо в вашем классе, потому что у вас нет конструкторов или методов.   -  person RaminS    schedule 16.07.2019
comment
Извините, вы правы, это КЛАССЫ, а не конструкторы.   -  person hyperstack    schedule 16.07.2019
comment
@hyperstack, не могли бы вы опубликовать свой код валидатора и указать, где он используется для присвоения значения для BikeGroup. Тогда кто-то сможет помочь вам достичь того, что вы пытаетесь сделать.   -  person Johna    schedule 16.07.2019
comment
Возможный дубликат Set and Get Methods in java?   -  person Pavan Nath    schedule 16.07.2019
comment
Вы можете искать какой-то вариант, используя отражение.   -  person Puneet    schedule 16.07.2019


Ответы (1)


Да. Но конструктор для Foo должен называться Foo (и вы хотите передать этому конструктору BikeGroup, поэтому ему нужен параметр). И вы не ставите () в объявлении class. Что-то вроде,

class Foo {
    public Foo(BikeGroup bg) {
        this.bikeName = bg.getBikeName();
        this.bikeModel = bg.getBikeModel();
    }
    private String bikeName;
    private String bikeModel;
}

Или, используя установщик...

class Foo {
    public void setBikeGroup(BikeGroup bg) {
        this.bikeName = bg.getBikeName();
        this.bikeModel = bg.getBikeModel();
    }
    private String bikeName;
    private String bikeModel;
}
person Elliott Frisch    schedule 16.07.2019
comment
Это хорошие ответы, но я устанавливаю BikeGroup с помощью валидатора (пружинная среда)... поэтому я не могу использовать конструктор или установщик для установки значений... - person hyperstack; 16.07.2019
comment
Если вы не можете использовать конструктор и не можете использовать метод, то, я думаю, вам просто не повезло. - person Elliott Frisch; 16.07.2019