Скажите, что у меня есть такой класс:
public final class Identity {
private String name;
private String nin;
private int age;
}
Я хочу получить значения полей в этом классе, из которых геттеры являются частными. До сих пор я не нашел другого решения, кроме как создать общий массив Object [] и сохранить значения каждого из полей в нем. Как это:
public Object[] getFields() {
fields = new Object[]{getName(), getNin(), getAge()};
return(fields);
}
Это действительно плохое решение? Я читал, что приведение типов обычно является признаком плохого программирования, и что мне, вероятно, следует переосмыслить свою стратегию, но я не вижу потенциальных недостатков, потому что: я точно знаю, сколько полей в моем классе, я точно знаю, в какой позиции они будут внутри массива, и я точно знаю тип данных каждого из них. Например, если я хочу получить доступ к полю age , я знаю, что оно будет на позиции 2 моего массива ( Object [2] ), и я знаю, что оно будет типа int , поэтому мне придется разыграть его как int .
Я приветствую любые идеи.
Примечание: я должен упомянуть, что требуется, чтобы к установщикам и получателям метода не обращался другой мешающий класс, поэтому они и объявлены как частные. Кроме того, в моей программе класс реализует такой интерфейс, как этот:
public interface Attribute {
// Fills the fields of the class with the data the user wants to.
void fill ( );
void view ( );
// Edits one or more of the fields of the class with the data the user wants to.
void edit ( );
String toString ( );
}
Который, как вы можете видеть, не имеет заданных и получающих сеттеров. getFields () метод обычно объявляется в интерфейсе, если он, конечно, считается не таким уж плохим решением.