Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我不能访问存储在ArrayList元素中的对象的属性?_Java - Fatal编程技术网

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

Java 为什么我不能访问存储在ArrayList元素中的对象的属性?,java,Java,我有两个包,让我们给它们命名为包1和包2。 A类和B类在包装1中。类A包含一个名为PTable的ArrayList。类B包含一个名为query的函数,该函数根据特定条件过滤类a中的PTable,并返回一个名为result的ArrayList,其中包含PTable中满足该条件的所有元素 我现在有包含C类的包2。C类从包1导入B类;类C是HttpServlet的一个子类。我在C类中创建了一个B类的对象并初始化它 然后调用函数查询并将其分配给名为results的变量。当我尝试获取某个索引处元素的属性时

我有两个包,让我们给它们命名为包1和包2。 A类和B类在包装1中。类A包含一个名为PTable的ArrayList。类B包含一个名为query的函数,该函数根据特定条件过滤类a中的PTable,并返回一个名为result的ArrayList,其中包含PTable中满足该条件的所有元素

我现在有包含C类的包2。C类从包1导入B类;类C是HttpServlet的一个子类。我在C类中创建了一个B类的对象并初始化它


然后调用函数查询并将其分配给名为results的变量。当我尝试获取某个索引处元素的属性时,我看不到存储在ArrayList PTable中的原始对象的属性。[这是我尝试访问对象属性时显示的内容。我的目标是查看第二张图像

提问很好,但首先花些时间学习Java。阅读一本书或在线,您将很快了解强制转换。还有关于类、超级类等

将对象存储在结果数组列表的元素类型变量中

将对象转换回它所属的类型,然后您将看到变量

代码设计说明:在同一数组列表中存储不同类型的类是合法的,也是可能的,但容易出现错误。请尽量避免。如果更改将变量存储到列表中的顺序,也需要更改所有访问代码。总之,学习愉快


有免费的在线Java教程学习它们->

示例类中,在main方法中,尝试在位置1处获取对象并将其投射给某人:

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

    }

}

很抱歉,只有一张图片,这就是我尝试访问objectWelcome to Stack Overflow属性时显示的内容!请看一下,并通读,特别是和。有免费的在线Java教程学习它们->我希望这个问题会被我们的霸主关闭或删除。所以请复制答案我不是这样问的。你的解决方案与我的问题无关。此外,你一开始的语气粗鲁且没有必要。实际上这是必要的。你的问题因此被其他人否决了。我给了你一个向上的投票,这样你在读完《海洋》后仍然可以问rch优先。