Вы можете создать класс, который представляет столбец, а затем представить строку в виде списка столбцов:
public class Column {
private String name;
private Class clazz;
private Object value;
public Column(String name, Class clazz, Object value) {
this.name = name;
this.clazz = clazz;
this.value = value;
}
// ...
}
Тогда ваши данные будут:
List<Column> row = new ArrayList<Column>();
row.add(new Column("Name", String.class, "Oskar"));
row.add(new Column("Age", Integer.class, 28));
row.add(new Column("weight", Double.class, 75.5));
row.add(new Column("weightUnit", String.class, "kilogram"));
Тем не менее, похоже, что вы пытаетесь создать базу данных, поэтому вы можете захотеть иметь класс Table
, который будет иметь List<ColumnDescriptor>
, где ColumnDescriptor
будет похоже на вышеуказанный класс Column
, только без значения - только имя и тип. И тогда, возможно, есть класс TableRow
, который будет иметь List<Object>
всех значений. Когда вы добавляете строку в таблицу, вы хотите проверить, что значения совместимы с типами столбцов этой таблицы.
Возможно, вы захотите взглянуть на то, как JDBC
создан для вдохновения. Поддержка всей необходимой общности, функциональности и обеспечение безопасности всех типов - это большая работа. Если вам действительно не нужно это для инструмента ORM
, настраиваемого решения для создания отчетов или реальной базы данных, вы можете переосмыслить дизайн и спросить, нужна ли такая универсальность. («Делай самое простое, что могло бы сработать».)