为什么我不能访问存储在ArrayList元素中的对象的属性?

时间:2017-03-12 18:29:40

标签: java

我有两个包,让我们给它们命名包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]

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));

    }

}