例如,用一个DatabaseRow类型表示一个数据库行(容器),用泛型Column<T>作为它的键
2023-12-16 04:57:27
以下是一个简单的示例,演示如何使用泛型的Column<T>
作为DatabaseRow
的键,表示一个数据库行(容器):
// 列定义
class Column<T> {
private String columnName;
private T value;
public Column(String columnName, T value) {
this.columnName = columnName;
this.value = value;
}
public String getColumnName() {
return columnName;
}
public T getValue() {
return value;
}
}
// 数据库行
class DatabaseRow {
private Map<String, Column<?>> columns = new HashMap<>();
// 添加列到数据库行
public <T> void addColumn(Column<T> column) {
columns.put(column.getColumnName(), column);
}
// 获取列的值
public <T> T getColumnValue(String columnName, Class<T> valueType) {
Column<?> column = columns.get(columnName);
if (column != null && valueType.isInstance(column.getValue())) {
return valueType.cast(column.getValue());
}
return null;
}
}
public class DatabaseExample {
public static void main(String[] args) {
// 创建数据库行
DatabaseRow row = new DatabaseRow();
// 添加不同类型的列
Column<String> nameColumn = new Column<>("Name", "John Doe");
Column<Integer> ageColumn = new Column<>("Age", 25);
Column<Double> salaryColumn = new Column<>("Salary", 50000.0);
row.addColumn(nameColumn);
row.addColumn(ageColumn);
row.addColumn(salaryColumn);
// 获取列的值
String name = row.getColumnValue("Name", String.class);
Integer age = row.getColumnValue("Age", Integer.class);
Double salary = row.getColumnValue("Salary", Double.class);
// 输出列的值
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Salary: " + salary);
}
}
在这个例子中,Column<T>
表示数据库行的列,具有列名和对应的值。DatabaseRow
表示整个数据库行,包含了多个列。使用泛型的好处在于可以存储不同类型的列,并且在获取列的值时能够进行类型安全的检查。
通过addColumn
方法,你可以向数据库行添加不同类型的列。而通过getColumnValue
方法,你可以从数据库行中安全地获取列的值,并指定期望的值类型。这种设计提高了类型安全性,确保了在运行时不会出现类型错误。
文章来源:https://blog.csdn.net/wcg_jishuo/article/details/135026473
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!