Kapselung Übergabe von Objekten aus ArrayList

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

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

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

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?
 

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
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
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
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
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
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
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
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
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
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
D Übergabe von Variablen Java Basics - Anfänger-Themen 11
W Variabeln Übergabe Java Basics - Anfänger-Themen 14
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
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
T Kollision von 2 Objekten Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
N Vererbung Queue bestehend aus Superclass- und Subclass-Objekten Java Basics - Anfänger-Themen 7
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7
YAZZ Schlüsselworte Töten von Objekten Gameover Java Basics - Anfänger-Themen 2
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Zeppi OOP Array in Objekten Java Basics - Anfänger-Themen 4
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
A Klasse Menge mit Objekten der Klasse Person Java Basics - Anfänger-Themen 8
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

Ähnliche Java Themen

Neue Themen


Oben