簡體   English   中英

為什么我不能訪問存儲在ArrayList元素中的對象的屬性?

[英]Why can't I accesses the properties of an object stored in a element of a ArrayList?

我有兩個軟件包,讓它們取名為package 1和package2。Class A和Class B在package1中。 類A包含一個稱為PTable的ArrayList。 類B包含一個名為query()的函數,該函數根據特定條件在類A中過濾PTable,並返回一個名為result的ArrayList,該列表包含PTable中滿足該條件的所有元素。

我現在有包含C類的package2。C類從包1導入B類; C類是HttpServlet的子類。 我在類C中創建一個類B的對象,並將其初始化。

然后,我調用函數query()並將其分配給一個名為result的變量。 當我嘗試在某個索引處獲取元素的屬性時,看不到存儲在ArrayList PTable中的原始對象的屬性。[這是我嘗試訪問對象的屬性時出現的內容。 我的目的是看第二張圖片] [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));

    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM