2017-03-12 2 views
0

Ich habe zwei Pakete lassen Sie ihnen den Namen Paket 1 und Paket 2 geben. Klasse A und Klasse B ist in Paket1. Klasse A enthält eine ArrayList namens PTable. Klasse B enthält eine Funktion namens query(), die auf Basis bestimmter Bedingungen durch PTable in Klasse A filtert und ein ArrayList namens Ergebnis zurückgibt, das alle Elemente von PTable enthält, die diese Bedingung erfüllen.Warum kann ich nicht auf die Eigenschaften eines Objekts zugreifen, das in einem Element einer ArrayList gespeichert ist?

Ich habe jetzt package2, die Klasse C enthält. Klasse C importiert Klasse B aus Paket 1; Klasse C ist eine Unterklasse von HttpServlet. Ich erstelle ein Objekt der Klasse B in Klasse C und initialisiere es.

Dann rufe ich die Funktion query() auf und weise sie einer Variable namens results zu. Wenn ich versuche, die Eigenschaften eines Elements in einem bestimmten Index abzurufen, kann ich die Eigenschaften der ursprünglichen Objekte, die in der ArrayList-PTable gespeichert sind, nicht sehen. [Dies erscheint, wenn ich versuche, auf die Eigenschaften der Objekte zuzugreifen. Mein Ziel ist es, das zweite Bild zu sehen ][1]

+0

leider noch nur ein Bild und das ist, was zeigt, wenn ich versuche und auf die Eigenschaften des Objekts zugreifen – Hayxe

+2

Willkommen bei Stack Overflow! Bitte nehmen Sie die [Tour] (http://stackoverflow.com/tour), schauen Sie sich um und lesen Sie die [Hilfe] (http://stackoverflow.com/help), insbesondere [Wie frage ich eine gute Frage?] (http://stackoverflow.com/help/how-to-ask) und [Was kann ich hier fragen?] (http://stackoverflow.com/help/on-topic). –

+1

Es gibt kostenlose Online-Java-Tutorials lernen sie -> https://www.google.co.in/search?q=java+tutorial+beginner Ich erwarte, dass diese Frage geschlossen oder von unseren Overlords gelöscht wird. Kopieren Sie die Antwort unten auf einen Notizblock und studieren Sie in Ihrer Freizeit! – tgkprog

Antwort

1

Schön, Fragen zu stellen, aber verbringen Sie zuerst irgendwann Java zu studieren. Lesen Sie ein Buch oder online und Sie werden sehr schnell über das Casting lernen. Auch über Klassen, Superklassen usw.

Sie speichern die Objekte in einer Variablen vom Typ Element (Ihre Ergebnisse Array-Liste).

Werfen Sie das Objekt zurück auf den Typ, zu dem es gehört, und dann sehen Sie die Variablen.

Code-Design-Hinweis: Speichern verschiedener Arten von Klassen in der gleichen Array-Liste ist legal und möglich, aber Bug anfällig. Versuche es zu vermeiden. Wenn Sie die Reihenfolge des Speicherns von Variablen in der Liste ändern, müssen Sie auch den gesamten Zugriffscode ändern. Jedenfalls fröhliches Lernen.

Es gibt kostenlose Online Java Tutorials sie studiert ->https://www.google.co.in/search?q=java+tutorial+beginner

Sample-Klasse, in der Haupt-Methode versuchen, das Objekt an der Position 1 zu erhalten und es zu einer Person werfen:

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

    } 

} 
+0

Das war nicht was ich gefragt habe. Und deine Lösung hat nichts damit zu tun, womit ich ein Problem hatte. Außerdem war dein Ton am Anfang unhöflich und unnötig. – Hayxe

+0

Eigentlich wurde es gebraucht. Ihre Frage wurde deswegen von jemand anderem abgelehnt. Ich habe dir einen Kommentar gegeben, damit du immer noch fragen kannst, nachdem du die [FAQ] gelesen und zuerst gesucht hast. – tgkprog

Verwandte Themen