Kapselung Übergabe von Objekten aus ArrayList

arjoopy

arjoopy

Mitglied
Heyho,
es existiert eine Klasse mit einer Menge Punkten:
Java:
public class ALotOfPoints {

    static Point p1 = new Point(-3.678,-83.689);
    static Point p2 = new Point(-73.440,81.76);
    static Point p3 = new Point(0.667,-18.607);
}
Hier schon die erste Frage: Das static vor den Points erfüllt nur den Zweck, die Fehlermeldung "Cannot make a static reference to the non-static field" zu umgehen - gibt's da vielleicht ne elegantere Lösung?
Weiterhin existiert eine zweite Klasse, die diese einzelnen Punkte einer ArrayList hinzufügt:
Code:
import java.util.ArrayList;
import java.util.List;

public class DefaultList {
   
    public DefaultList() {
       
        List<Point> pointlist = new ArrayList<Point>();
       
        pointlist.add(ALotOfPoints.p1);
        pointlist.add(ALotOfPoints.p2);
        pointlist.add(ALotOfPoints.p3);
    }
}
Mir stellt sich nun die nach ausreichend Internetrecherche immernoch nicht beantwortete Frage, wie ich jetzt aus der Mainclass auf einzelne Elemente der ArrayList zugreifen kann? Das hier erschien mir logisch, funktioniert aber jedenfalls nicht:
Java:
public class Mainclass {

    public static void main(String[] args) {
       
        System.out.println(DefaultList.pointlist.p1);   
    }
}
Danke im Voraus!
 
Flown

Flown

Administrator
Mitarbeiter
Die Frage ist so allgemein, dass ich dich fragen möchte, was möchtest du denn mit deinem Progamm erreichen/machen?
Am einfachsten wäre:
Java:
class ALotOfPoints {
  
  public static final Point P1 = new Point(-3.678d, -83.689d);
  public static final Point P2 = new Point(-73.440d, 81.76d);
  public static final Point P3 = new Point(0.667d, -18.607d);
  
  public static List<Point> defaultPoints() {
    return Arrays.asList(P1, P2, P3);
  }
}
Dann die Verwendung in deiner main:
Java:
System.out.println(ALotOfPoints.defaultPoints());
 
K

Kababär

Top Contributor
"Cannot make a static reference to the non-static field"
Das ist der Fall in der Main, da du dich dort in einem statischen Kontext (public static void main ...) befindest.

Du kannst aber ein neues Objekt "ALotOfPoints" instanziieren.
Generell würde ich hier auf "static" komplett verzichten. Brauchst du die Klasse "DefaultListe" wirklich?
So fände ich es persönlich angenehmer.

Code:
public class ALotOfPoints {

    private Point p1;
    private Point p2;
    private Point p3;
    private List<Point> pointList;
    public ALotOfPoints(){
        pointList = new ArrayList<>();
        p1 = new Point(-3.678,-83.689);
        p2 = new Point(-73.440,81.76);
        p3= new Point(0.667,-18.607);

        pointList.addAll(p1,p2,p3);
    }


    public List<Point> getPoints(){
              return pointList;
    }
}

Code:
public class Mainclass {

    public static void main(String[] args) {
     
        System.out.println(new ALotOfPoints().getPoints().get(0));
    }
}

Je nachdem, ob sich die Punkte nochmal ändern sollen oder nicht, würde ich diese final machen (oder eben nicht).
Generell bin ich davon abgeneigt, Klassenattribute als public static zu deklarieren.
 
arjoopy

arjoopy

Mitglied
@Flown Obenstehendes ist nur Vorläufer für ein Programm zur Ermittlung der BoundingBox einer Punktwolke, ich als blutiger Anfänger wollte mich nur mit so einer grundlegenden Aufgabe mit dem Konzept von ArrayLists vetraut machen, da ich damit zuvor noch die gearbeitet habe.
@Kababär Die Klasse DefaultList ist in ihrer Form unumgänglich, da die Punkte aus einer anderen Quelle in dieser Form ausgegeben werden. Insofern löst eine Umstrukturierung mein Problem nicht, da aus der Mainclass auf die pointlist zugreifen muss.

Nochmal konkret das eigentliche Problem: Was ist an System.out.println(DefaultList.pointlist.p1); falsch, wenn man aus der Mainclass auf eine ArrayList in einer anderen Klasse zugreifen möchte?
 
K

Kababär

Top Contributor
Ok. Also in DefaultList
public class DefaultList {

public DefaultList() {

List<Point> pointlist = new ArrayList<Point>();

pointlist.add(ALotOfPoints.p1);
pointlist.add(ALotOfPoints.p2);
pointlist.add(ALotOfPoints.p3);
}
}

deklarierst du eine Liste von Punkten im Konstruktor. Diese Liste müsste eigentlich als Klassenattribut deklariert werden, wenn du diese Liste außerhalb der Klasse benötigst.
Also ungefähr so:
Code:
public class DefaultList {

    public static List<Point> pointlist;
    public DefaultList() {
   
        pointList = new ArrayList<Point>();
   
        pointlist.add(ALotOfPoints.p1);
        pointlist.add(ALotOfPoints.p2);
        pointlist.add(ALotOfPoints.p3);
    }
}

Dann solltest du mit dem Sout/Sysout keine Probleme haben.
Um allerdings auf Attribute von Objekten zuzugreifen, verwendet man meistens Getter & Setter.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Übergabe von Objekten Java Basics - Anfänger-Themen 0
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
S Übergabe von Arrays an Methoden Java Basics - Anfänger-Themen 20
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
D Methode mit Übergabe double und Rückgabe String Java Basics - Anfänger-Themen 2
L Methoden Übergabe von Parameter Java Basics - Anfänger-Themen 3
K Java Problem mit Übergabe von argumenten Java Basics - Anfänger-Themen 3
J Übergabe von Parametern an andere Methoden Java Basics - Anfänger-Themen 5
D Probleme mit der Übergabe einer BorderPane Java Basics - Anfänger-Themen 2
R Methoden Übergabe von einer Methodenvariable Java Basics - Anfänger-Themen 3
M Übergabe von Werten Java Basics - Anfänger-Themen 10
C Erste Schritte Übergabe von Klassen Java Basics - Anfänger-Themen 2
C Methoden Objekte und Methode und Übergabe Java Basics - Anfänger-Themen 4
O Übergabe in eine andere Klasse Java Basics - Anfänger-Themen 3
M Übergabe / Rückgabe Java Basics - Anfänger-Themen 6
S Kapselung Objekt bei Übergabe an Konstruktor nicht initalisiert Java Basics - Anfänger-Themen 3
T Problem bei Übergabe von Variablen Java Basics - Anfänger-Themen 1
fLooojava Probleme bei der Übergabe einer Variable Java Basics - Anfänger-Themen 14
A Problem mit set.Text und übergabe Java Basics - Anfänger-Themen 2
R Vererbung Übergabe von Variablen der Superklasse an Subklasse mit "extends" Java Basics - Anfänger-Themen 5
S OOP Übergabe eines Objektes? Java Basics - Anfänger-Themen 1
fLooojava OOP Übergabe/Output in Textfield Java Basics - Anfänger-Themen 4
Furtano OOP Memento Pattern | übergabe einer Kopie des Arrays Java Basics - Anfänger-Themen 0
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
J Problem bei Param.übergabe und dem erstellen von JButtons Java Basics - Anfänger-Themen 4
S Übergabe Java Basics - Anfänger-Themen 14
S Klassen Array: Übergabe von Klasse zur Main Java Basics - Anfänger-Themen 8
A NullPointerException bei Übergabe eines Array Java Basics - Anfänger-Themen 8
feardorcha Methodenaufruf Übergabe- und Rückgabewert Java Basics - Anfänger-Themen 5
D Klassen Problem - Übergabe an Konstruktor von Superklasse Java Basics - Anfänger-Themen 2
D Objekt Übergabe Java Basics - Anfänger-Themen 12
M Array Übergabe Java Basics - Anfänger-Themen 17
W Übergabe Stringzeilen von serieller Schnittstelle in andere Klasse Java Basics - Anfänger-Themen 3
B Übergabe Dateiname (String) an andere Klasse Java Basics - Anfänger-Themen 4
P Methoden Übergabe von Werten Java Basics - Anfänger-Themen 7
F Variablen Übergabe von eingelesenen Variablen in neue Klasse Java Basics - Anfänger-Themen 15
M Fragen zu Methoden (void/return), Übergabe von Parametern Java Basics - Anfänger-Themen 3
M problem mit string übergabe an klasse Java Basics - Anfänger-Themen 10
A übergabe wert in andere klasse Java Basics - Anfänger-Themen 8
A Übergabe von Variablen zu Paintmethode Java Basics - Anfänger-Themen 2
N Array Übergabe Java Basics - Anfänger-Themen 9
L Klassen Parameter Übergabe Java Basics - Anfänger-Themen 12
A OOP Übergabe eines Wertes an den enum Konstruktor Java Basics - Anfänger-Themen 12
O Übergabe von Variablen Java Basics - Anfänger-Themen 9
Darth Simple Übergabe eines Strings an eine Methode Java Basics - Anfänger-Themen 3
A Frage zur Übergabe von Strings Java Basics - Anfänger-Themen 9
N Übergabe problem Java Basics - Anfänger-Themen 6
M Übergabe von VM Argumenten Java Basics - Anfänger-Themen 4
J Übergabe einer ArrayList an mehrere Threads Java Basics - Anfänger-Themen 3
A konstruktor übergabe fehler Java Basics - Anfänger-Themen 8
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
J Übergabe eines Arrays als Parameter Java Basics - Anfänger-Themen 2
G JFileChooser übergabe an Directory Java Basics - Anfänger-Themen 4
S Übergabe von Frame-Objekt - kritisch? Java Basics - Anfänger-Themen 7
L JTabbedPane, richtige Übergabe von Tabs Java Basics - Anfänger-Themen 18
Z BigInteger Methoden und deren Übergabe Java Basics - Anfänger-Themen 3
K Übergabe einer im EventListener definierte variablen Java Basics - Anfänger-Themen 2
M Übergabe von Variablen in eine Klasse Java Basics - Anfänger-Themen 13
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
M Problem bei der Übergabe von Werten Java Basics - Anfänger-Themen 7
G Übergabe von Parametern an JSP Java Basics - Anfänger-Themen 3
S Veränderung von Protected Daten durch Übergabe? Java Basics - Anfänger-Themen 3
K Übergabe der Variable für Farbe Java Basics - Anfänger-Themen 6
G List<.> nach Übergabe vergleichen? Java Basics - Anfänger-Themen 3
G Übergabe Variablen von Servlet zu JSP? Java Basics - Anfänger-Themen 4
M [SOLVED]parameter übergabe an objekte Java Basics - Anfänger-Themen 2
R Beiß mir die Zähne aus an der Request-Parameter-Übergabe! Java Basics - Anfänger-Themen 10
lin Übergabe an JPanel-Klasse Java Basics - Anfänger-Themen 3
S NullPointerException bei Array-Übergabe Java Basics - Anfänger-Themen 3
Z übergabe von string[] an konstruktoren oder methoden Java Basics - Anfänger-Themen 3
D Übergabe von Variablen Java Basics - Anfänger-Themen 11
W Variabeln Übergabe Java Basics - Anfänger-Themen 14
W übergabe des aktuellen wertes in andere Klasse Java Basics - Anfänger-Themen 3
F Großes Problem: Vector-Übergabe Java Basics - Anfänger-Themen 7
F Übergabe Vaterframe mit this und Fehlermeldung. Java Basics - Anfänger-Themen 2
D Fragen zu Methoden und Übergabe von Werten Java Basics - Anfänger-Themen 4
G Übergabe von Variablenwerten zwischen Methoden Java Basics - Anfänger-Themen 4
D Problem bei Übergabe von Werten an eine Methode Java Basics - Anfänger-Themen 2
H Übergabe eines Wertes an eine Bean --> Bean leer Java Basics - Anfänger-Themen 6
T Array-Übergabe Java Basics - Anfänger-Themen 7
M Windows Pfad-Übergabe.. Java Basics - Anfänger-Themen 6
S String mit Konstruktor (per Übergabe) initialisieren Java Basics - Anfänger-Themen 10
S Auf Array aus Objekten zugreifen? Java Basics - Anfänger-Themen 1
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
D Operatoren Mit Objekten rechnen Java Basics - Anfänger-Themen 7
E Datentypen Einfügen von Objekten in eine Map Java Basics - Anfänger-Themen 2
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
B ID von unterschiedlichen Objekten bekommen? Java Basics - Anfänger-Themen 2
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
PaperHat Programmieraufgabe - Objekte in Objekten Java Basics - Anfänger-Themen 2
L Rechnen mit Objekten Java Basics - Anfänger-Themen 3
S werte von objekten in schleife verändern Java Basics - Anfänger-Themen 14
D Zusammenarbeit von Objekten Java Basics - Anfänger-Themen 1
Y Begrenzte Anzahl an Objekten? Java Basics - Anfänger-Themen 12
Kornblume Nulltyp eines Arrays von Objekten? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Anzeige

Neue Themen


Oben