java - 如何通过 Generic arrayList 访问对象中的特定数据?
问题描述
在这里,我有一个关于如何通过通用列表对象访问名为Car的对象内的特定数据的问题
- 这是我的课程Car.java
public class Car {
public String name;
public double price;
public String production;
public Car(String name,double price,String pro){
this.name=name;
this.price=price;
this.production=pro;
}
public String getName(){return this.name;}
public double getPrice(){return this.price;}
public String getProduction(){return this.production;}
}
*我想通过DisplayCarName()方法通过泛型访问 Car 对象的名称,但是发生了错误,编译失败在“ u.get(i).getName(); ”
- 这是我的GenericCar.java
public class GenericCar <T> {
List<T>u ;
GenericCar(){
u = new ArrayList<T>();
}
public void Add(T x){
u.add(x);
}
//i want to display only Car class,specifically name of car,but it seems not work!
public void DisplayCarName(){
for(int i=0;i<u.size();i++){
System.out.println(u.get(i).getName());
}
}
}
*在我的主类中,我不能使用这个方法car2.DisplayCarName(); 在通用类
public class Main() {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
GenericCar<Car>car2= new GenericCar<Car>();
car2.Add(new Car("Toyota",20.3,"Toyota"));
//use this ok!
System.out.println(car2.u.get(0).getName());
//but this is not!
car2.DisplayCarName();
}
}
*关于我的问题的全部内容是“如何通过通用列表对象访问名为Car的对象内的特定数据,对不起,问题太长了!”
解决方案
T 可以是 中的任何类GenericCar<T>
,而不仅仅是 Car,因此编译器不知道“getName”指的是 Car 中的方法。
这是修复它的一种方法。您可以使用类型变量的界限来告诉编译器 T 实际上必须是某种 Car:
class GenericCar<T extends Car>
推荐阅读
- python - 如何在不使用搅拌机的 bpy 的情况下创建一个用 Python 连接两个点的圆柱体?
- reactjs - react-native-web 如何使用 react-native 导入?
- post - Shopify API HTTP POST 重定向而不是 POST
- css - 使用 Flexbox 和 Material UI 使 Item 位于底部
- google-apps-script - 可以在 Google Script WebApp 的 HTML 端使用 If/Else 语句吗?
- javascript - Fullcalendar - 使用 eventRender 向事件添加图标
- sql - 澳大利亚联邦运动会的数据库设计是否良好或需要一些调整?
- java - JavaFX Controlsfx 库 Check-ComboBox 自动完成
- flutter - Flutter:如何将 SQLite 数据库导出为 CSV?
- gateway - Azure IOT边缘错误拉取自定义nodeJS模块的docker镜像