我有两个包,让我们给它们命名包1和包2。 A类和B类在package1中。 A类包含一个名为PTable的ArrayList。 B类包含一个名为query()的函数,该函数根据特定条件在类A中过滤PTable,并返回一个名为result的ArrayList,其中包含符合该条件的PTable中的所有元素。
我现在有包含Class C的package2.C类从包1导入B类; C类是HttpServlet的子类。我在C类中创建了一个B类对象并初始化它。
然后我调用函数query()并将其分配给名为results的变量。当我尝试在某个索引处获取元素的属性时,我看不到存储在ArrayList PTable中的原始对象的属性。[这是当我尝试访问对象的属性时出现的内容。我的目的是看到第二张图片][1]
答案 0 :(得分:1)
很高兴提问,但首先花一些时间学习Java。阅读一本书或在线阅读,您将很快了解到铸造。关于班级,超级班等
将对象存储在Element类型的变量中(结果数组列表)。
将对象转换回它所属的类型然后你会看到变量。
代码设计说明:在同一个数组列表中存储不同类型的类是合法的,可能但容易出错。尽量避免它。如果更改将变量存储到列表中的顺序,则还需要更改所有访问代码。无论如何快乐学习。
有免费的在线Java教程研究它们 - > https://www.google.co.in/search?q=java+tutorial+beginner
示例类,在main方法中尝试将对象放在位置1并将其转换为Person:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
super();
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Car {
private String manufacturer;
private String model;
private double price;
private int yearOfMfr;
private Date dateBought;
private String licenceNumber;
public Car() {
super();
}
public Car(String manufacturer, String model, double price, int yearOfMfr, Date dateBought, String licenceNumber) {
super();
this.manufacturer = manufacturer;
this.model = model;
this.price = price;
this.yearOfMfr = yearOfMfr;
this.dateBought = dateBought;
this.licenceNumber = licenceNumber;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getYearOfMfr() {
return yearOfMfr;
}
public void setYearOfMfr(int yearOfMfr) {
this.yearOfMfr = yearOfMfr;
}
public Date getDateBought() {
return dateBought;
}
public void setDateBought(Date dateBought) {
this.dateBought = dateBought;
}
public String getLicenceNumber() {
return licenceNumber;
}
public void setLicenceNumber(String licenceNumber) {
this.licenceNumber = licenceNumber;
}
}
public class DemoApp {
public static void main(String[] args) {
List<Object> results = new ArrayList<>();
DemoApp app = new DemoApp();
app.fillItUp(results);
Car acar = (Car) results.get(0);
acar.setLicenceNumber("Flying Duck");
}
private void fillItUp(List<Object> results) {
Car car = new Car("sel2in", "electric_VTOL", 540923, 2018, new Date(2018, 3, 32), "Skyprog");
results.add(car);
results.add(new Person("tushar", 39));
}
}