Вместо того, чтобы иметь индивидуальную именованную переменную-член для каждого атрибута, вы рассматривали возможность использования HashMap для хранения атрибутов?Ваш класс будет иметь карту атрибутов
Map<String,Object> attributes = new HashMap<String,Object>();
, а ваш приведенный выше метод уменьшится до
public void writeAttribute(String attribute, Object value) {
this.attributes.put(attribute,value);
}
Поскольку вы все равно применяете приведение, у вас будут методы, которые приводят значение соответствующим образом, когда выполучить доступ к нему или разыграть его самостоятельно в точке доступа.