我正在尝试从对象类型泛型List中获取值。我想在该类的一个属性的值上加上一些条件。 例如,我有Bean类User
class User {
private String firstName;
private String lastName;
private String companyName;
//Getters and Setters
}
我在表格中存储了三条记录。喜欢 (FIRST_NAME,LAST_NAME,COMPANY_NAME) (John,Woods,Persistent)(比尔,盖茨,微软)(史蒂夫,乔布斯,苹果)
当我从表中获取这些记录时,它就像这样的列表
List<T> list = query.getResultList();
现在我想检查是否有任何用户拥有lastName = Jobs然后将公司的值更改为Google。
有人请告诉我该怎么做。
答案 0 :(得分:4)
在一般情况下,您可以这样做:
for(T item : list) {
if(item instanceof User && "Jobs".equals(((User)item).getLastName())) {
// Change company to google.
}
}
答案 1 :(得分:0)
根据T
的类型,您无法使通用方法执行不同的操作。
在List<T>
中,对T
的类型没有限制,因此它所知道的是它是某种类型的对象,你可以只调用适用于任何对象的方法(即Object
类中定义的方法)。基本上,T
类型的变量实际上是运行时类型Object
的变量。
您可以使用instanceof
和强制转换来检查对象是否属于特定类型:
for (T item : list) {
if (item instanceof User) {
User user = (User) item;
// ...
}
}
但这与仿制药并不相关;你不是在查看T
的类型,只是列表中每个单独对象的类型。
答案 2 :(得分:-2)
for(T element : list){
if((element instanceof User) && (element.getLastName().equals("Jobs")))
element.setCompany("Google");
}
你需要制定者和吸气者,因为这些字段是私人的。