Зависимые атрибуты в классе Java - PullRequest
0 голосов
/ 11 сентября 2010

У меня есть следующий класс Java:

public class Query implements Serializable {
    static Object[] o= new Object[8];

    private long oid= (Long) o[0];
    private double[] region= { (Double) o[1],(Double) o[2],(Double) o[3]  };
    private boolean filter= (Boolean) o[4];
    private float[] vel= {(Float) o[5], (Float) o[6]};
    private float[] pos= {(Float) o[7], (Float) o[8]};

    public Query(Object[] b){
        o=b;
    }

Класс Query будет массивом объектов, и я хочу установить зависимость между Object [] o и oid, region, ...

Если я изменю значение региона, соответствующее значение в объекте [] будет изменено автоматически.

Не могли бы вы предложить мне какой-нибудь способ сделать это эффективно. Спасибо!

Ответы [ 2 ]

3 голосов
/ 11 сентября 2010

Вам нужно обернуть все примитивные / неизменяемые типы в изменяемый тип, чтобы вы могли просто ссылаться на него.Использование Javabean является распространенным подходом для этого.

public class Data {
    private long id;
    private double[] region;
    private boolean filter;
    private float[] vel;
    private float[] pos;

    // Add or generate c'tors/getters/setters/equals/hashcode/tostring here.
}

Так что вы можете просто сделать

public class Query {
    private Data data;

    public Query(Data data) {
        this.data = data;
    }
}
0 голосов
/ 11 сентября 2010

Я бы определенно использовал шаблон проектирования строителя здесь.Это обеспечит безопасность типов в первую очередь.И вы могли бы использовать примитивные типы ... В вашей реализации для получения исключения во время выполнения требуется только одна ошибка на стороне клиента класса.Это отвечает на ваш вопрос?

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