![](/img/trans.png)
[英]Why I can't add CustomType ArrayList to ArrayList of Object ArrayLists?
[英]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.