auf Klassen innerhalb eines package zugreifen

ReinerCoder

Bekanntes Mitglied
Hallo. Bin neu in diesem Forum und schreibe dieses Thema, da ich ein Programm welches ich vor Jahren geschrieben habe, wieder weiter entwickle und mein Wissen nicht mehr komplett aus dem Gedächtnis auf Anhieb abrufbar ist.

Also zum Programm:

Ich habe mehrere Klassen als Java Dateien in einem Paket. Nun will ich aus einer Klasse mit einem Objekt einer anderen Klasse per get und set Methoden auf dieses Objekt zugreifen und ein Variable modifizieren.
Also um genau zu sein, habe ich zwei Radio Buttons die für die Auswahl von männlich oder weiblich stehen und in einer weiteren Klasse ist eine Person deklariert mit get und set Methoden für u.a. die beiden Attribute männlich und weiblich.
Nun habe ich eine Fehlermeldung, die mir meldet:

Multiple markers at this line
- Syntax error on token "(", . expected
- Illegal modifier for the variable geschlecht; only final is
permitted
- setGeschlecht cannot be resolved to a type
- Syntax error on token ")", ; expected

für die Methode die ich nutzen will und wo diese Fehlermeldung erscheint, sieht der Code so aus:

Code:
        boolean isMaleSelected = optionM.isSelected();
        if (isMaleSelected)
        {
            public setGeschlecht(String geschlecht)
             {
                   this.geschlecht = geschlecht;
             }      
        }
        else
        {
      
        }

Seltsam ist das diese Fehlermeldung meint, ich müsse final für diese Methode setzen, da ich die Klasse Person als public deklariert habe!!! Die Entwicklungsumgebung ist Eclipse 3.8.1 mit Linux.
Also auf eine Klasse zugreifen wenn diese public ist müsste doch eigentlich kein Problem sein oder nicht?
Wo ist der Fehler? Danke
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Du kannst keine Methode in einer Methode verschachteln, sondern den setter aufrufen.
Java:
boolean isMaleSelected = optionM.isSelected();
if (isMaleSelected) {
  setGeschlecht("männlich");
} else {
 // ...
}
 

ReinerCoder

Bekanntes Mitglied
Du kannst keine Methode in einer Methode verschachteln, sondern den setter aufrufen.

Daran liegt es nicht nur. Habe den Tipp befolgt und dann wird daraus folgendes Problem:

wenn ich z.B. in der Klasse in der ich die grafische Oberfläche erzeuge, z.B. diesen Code für ein Objekt einer Person nutze:

Java:
Person p = new Person(gewicht, groesse, geschlecht);

habe ich folgende Fehlermeldung:

Multiple markers at this line
- Line breakpoint:GUIforBMI [line: 40] -
GUIforBMI()
- groesse cannot be resolved to a variable
- gewicht cannot be resolved to a variable
- geschlecht cannot be resolved to a variable
 
Zuletzt bearbeitet:

Robat

Top Contributor
Du musst schon entsprechende Werte an den Konstruktor übergeben.
Dann kannst du über dieses Objekt auch Getter/Setter aufrufen.
Java:
Person person = new Person(75, 175, "männlich");
 

ReinerCoder

Bekanntes Mitglied
Du musst schon entsprechende Werte an den Konstruktor übergeben.
Dann kannst du über dieses Objekt auch Getter/Setter aufrufen.

ja wenn du statisch programmieren willst, dann ja. Wenn ich in einer Datei=Klasse einen Konstruktor für die Klasse Person erstellt habe, brauch ich keine Werte übergeben. Dies passiert über die grafische Oberfläche wo ich Felder nutze und / oder die in diesem Beispiel, für die Auswahl von männlich oder weiblich, benannten Radio Buttons. Die ich optionM und optionW genannt habe.
 
Zuletzt bearbeitet:

Robat

Top Contributor
Wo die Daten herkommen (statisch oder von irgendeiner GUI in Variablen gespeichert werden) ist doch völlig irrelevant.
Die Variablen müssen aber in dem Scope, wo du sie benutzen willst, bekannt sein ansonsten bekommst du die von dir oben genannte Fehlermeldung.
 

ReinerCoder

Bekanntes Mitglied
Wo die Daten herkommen (statisch oder von irgendeiner GUI in Variablen gespeichert werden) ist doch völlig irrelevant.
Die Variablen müssen aber in dem Scope, wo du sie benutzen willst, bekannt sein ansonsten bekommst du die von dir oben genannte Fehlermeldung.

Nein. Wo die Daten herkommen ist nicht egal. Wenn ich ein Beispiel nutze, wo ich mit einer grafischen Oberfläche arbeite bzw. programmiere macht es keinen Sinn mit statischen Beispielen um sich zu werfen.

Ich suche also einen Code, womit ich zwei Radio Buttons zur Auswahl von männlich oder weiblich nutzen kann und in einer Klasse für das GUI erzeuge ich ein Objekt Person, welches die Auswahl von männlich oder weiblich von den Radio Buttons übernimmt. Also aus boolean true oder false ein String wie z.B. m oder w generiert wird, der dann an ein Objekt der Klasse Person übergeben wird.

Mein Problem ist u.a. glaub: ich weiß nicht wie ich aus einem Wert boolean (von den Radio Buttons) einen String für dieses Objekt Person erzeugen kann, also entweder m oder w.
 
Zuletzt bearbeitet:

Robat

Top Contributor
Wie sieht denn dein Code jetzt aus? Aus dem obigen Code wird man nicht schlau wo/wie gewicht, groesse, geschlecht deklariert sind.
 

ReinerCoder

Bekanntes Mitglied
Wie sieht denn dein Code jetzt aus? Aus dem obigen Code wird man nicht schlau wo/wie gewicht, groesse, geschlecht deklariert sind.

Ich könnte hier auch die Vermutung äußern du willst mich nur zu deinen Gunsten bloßstellen und mir in Wirklichkeit nicht helfen, da ich in diesem Beitrag genau erklärt habe, was ich in diesem Programm programmieren will.
 

Robat

Top Contributor
Ehmm ... was?o_O
Du hattest oben geschrieben, dass du folgende Fehlermeldung bekommst:
Code:
Multiple markers at this line
- Line breakpoint:GUIforBMI [line: 40] -
GUIforBMI()
- groesse cannot be resolved to a variable
- gewicht cannot be resolved to a variable
- geschlecht cannot be resolved to a variable
Die besagt ganz klar, dass es in dem aktuellen Scope keine Variablen groesse, gewicht, geschlecht gibt.
Deinem Code aus dem Posting#3 kann man nicht entnehmen, wo diese Variablen deklariert werden - du müsstest also etwas mehr Code zeigen .. ansonsten kann man dir nur schwer helfen.
 

ReinerCoder

Bekanntes Mitglied
Die besagt ganz klar, dass es in dem aktuellen Scope keine Variablen groesse, gewicht, geschlecht gibt.
Deinem Code aus dem Posting#3 kann man nicht entnehmen, wo diese Variablen deklariert werden

In dem Punkt stimme ich zu. Offensichtlich besteht ein Problem mit den Gültigkeitsbereichen diverser Elemente. Wo diese Variablen deklariert werden, habe ich doch geschrieben:

Eine Klasse die public ist, genannt Person in der ein Konstruktor die Variablen erzeugt. Dann habe ich die Klasse für die GUI für dieses Programm, in der ein User mit den beiden RadioButtons die Auswahl männlich oder weiblich treffen kann. In der Klasse für die GUI will ich dann eine Methode erstellen (isMaleSelected (worin ich im ersten Beispiel übrigen der Vergleich mit == true vergessen habe) mit der ich auf die set Methode der Klasse Person zugreifen kann.

Also hier mal Ausschnitte aus dem Code sonst wird zu unübersichtlich:

Die Klasse Person:

Java:
public class Person
{
 
    public Person(String gewicht, String groesse, String geschlecht) {
        super();
        this.gewicht = gewicht;
        this.groesse = groesse;
        this.geschlecht = geschlecht;
    }

 
    public String getGeschlecht() {
        return geschlecht;
    }
 
    public String setGeschlecht(String geschlecht)
    {
        return this.geschlecht = geschlecht;
    }

    //usw.
 
}

in der Klasse mit der GUI steht dann:

Java:
public BMI()
{

Person p = new Person(gewicht, groesse, geschlecht); //hier ist der Fehler aus dem ersten Post von mir

      boolean isMaleSelected = optionM.isSelected();
        if (isMaleSelected == true)
        {
            p.setGeschlecht(geschlecht) //lasse ich p. weg ist hier ist ein Fehler mit:Multiple markers at //this line - Syntax error, insert ";" to complete BlockStatements
//- geschlecht cannot be resolved to a variable
        }
        else
        {
 
        }
}
 
Zuletzt bearbeitet:

Robat

Top Contributor
1. Deine Klasse Person besitzt keine Attribute gewicht, geschlecht, groesse.

Beispiel:
Java:
public class Foo {
   private int attribute;
   public Foo(int attribute) {
       this.attribute  = attribute;
   }
}

2. In deiner GUI Klasse versuchst du die setGeschlecht(..) Methode aufzurufen. Die kannst du aber nur über ein Personen-Objekt aufrufen.
 

ReinerCoder

Bekanntes Mitglied
1. Deine Klasse Person besitzt keine Attribute gewicht, geschlecht, groesse.

Beispiel:
Java:
public class Foo {
   private int attribute;
   public Foo(int attribute) {
       this.attribute  = attribute;
   }
}

2. In deiner GUI Klasse versuchst du die setGeschlecht(..) Methode aufzurufen. Die kannst du aber nur über ein Personen-Objekt aufrufen.

Ich habe doch die Methode mit einem Objekt von Person aufgerufen. Und dann habe ich diese Fehlermeldung neben dem erstellten Objekt:
Multiple markers at this line
- groesse cannot be resolved to a variable
- gewicht cannot be resolved to a variable
- geschlecht cannot be resolved to a
variable
 

Robat

Top Contributor
Dann hattest du das wohl nachträglich mit hingeschrieben.
Das hatte ich beim ersten mal nicht gesehen.

Person p = new Person(gewicht, groesse, geschlecht);
Du übergibst dem Konstruktor 3 Variablen, die er in dem Kontext/Scope nicht kennt.
Du müsstest vorher gewicht, groesse und geschlecht deklarieren/initialisieren (sei es jetzt aus deiner GUI oder statisch).
 

ReinerCoder

Bekanntes Mitglied
Dann hattest du das wohl nachträglich mit hingeschrieben.
Das hatte ich beim ersten mal nicht gesehen.


Du übergibst dem Konstruktor 3 Variablen, die er in dem Kontext/Scope nicht kennt.
Du müsstest vorher gewicht, groesse und geschlecht deklarieren/initialisieren (sei es jetzt aus deiner GUI oder statisch).

Nochmal: Ich habe die Klasse Person in dem Package als public vorliegen.
Ich vermute der Compiler hat eine Macke.
 
Zuletzt bearbeitet:

X5-599

Top Contributor
Der Konstruktor der Klasse Person hat drei Parameter. Die müssen auch übergeben werden wenn man davon ein Objekt erzeugen will. Sollen die Eigenschaften, die im Moment von diesen Parametern bestimmt werden später per Setter gesetzt werden, so muss ein Parameterloser Konstruktor in der Klasse Person vorhanden sein.

Code:
public class Person
{
  //...
  public Person()
  {
  }
  //...
}

Dann kann ein Person Objekt einfach per:
Code:
Person p = new Person();
erzeugt werden.
 

Robat

Top Contributor
Das ganze hat doch nix mit dem Access Modifier von der Klasse Person zu tun und kaputt ist der Compiler auch nicht.

Vielleicht hier noch mal an einem kleinen Beispiel verdeutlicht.

Die Klasse Data hat ein Attribut x was ich gerne aus der Klasse Main verändern würde.
Dazu lege ich in der main ein Data-Objekt an und übergebe dem Konstruktor den Wert der Variable x (aus der main).
Jetzt kann man über das data-Objekt dessen Methoden aufrufen und so bspw. das Attribut verändern.
Java:
public class Data {
     private int x;
     public Data(int x) {
          this.x = x;
     }
     public void setX(int x) {
         this.x = x;
     }
}

public class Main {
    public static void main(String[] args) {
          int x = 5; // WICHTIG: Die Variable x hat nichts mit der Attribut x aus der Data-Klasse zu tun. Das sind 2 verschiedene.
          Data data = new Data(x);
          data.setX(100);
    }
}

Wenn die main jetzt nur so aussieht (so wie du es gemacht hast), gibt es ein Problem.
Java:
public class Main {
    public static void main(String[] args) {
          Data data = new Data(x);
          data.setX(100);
    }
}
Der Compiler weiß nicht was x in dem Kontext sein soll und "meckert", dass er keine Variable x finden kann. Daher wie oben gezeigt woher eine Variable anlegen.
In deinem Fall wäre das dann eben die Daten von der GUI (oder von wo auch immer) zu holen und dem Konstruktor zu übergeben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Klassen innerhalb einer jar ersetzen Allgemeine Java-Themen 2
E Schaffe es einfach nicht daten innerhalb von 2 klassen zu üb Allgemeine Java-Themen 4
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
8u3631984 Jacoco Testcoverage bei Abstracten Klassen in verschachtelten Modulen Allgemeine Java-Themen 6
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
B Wie kann ich mein 8 Klassen Gebilde objektorientierter schreiben? Allgemeine Java-Themen 114
N abstracte klassen methoden Allgemeine Java-Themen 32
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
M Kann man Annotationen auf Klassen einschränken die ein Interface implementieren? Allgemeine Java-Themen 1
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
P Abstrakte Klassen vs. Interface Allgemeine Java-Themen 4
I Klassen aus Jar-Dateien aus anderem Ordner laden Allgemeine Java-Themen 3
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
B Problem mit meinen Klassen Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
F Code in Klassen bringen Allgemeine Java-Themen 4
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
F Klassen Verwendung abstrakter Klassen Allgemeine Java-Themen 9
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
B Vererbung Interface und implementierende Klassen Allgemeine Java-Themen 8
D Klassen JLabels in anderen Klassen verwenden. Allgemeine Java-Themen 7
H Klassen LibGDX - Verschiedene Klassen als Value in einer Map Allgemeine Java-Themen 8
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
A Anonyme Klassen - Interface Allgemeine Java-Themen 5
J Tetris Probleme bei Klassen Allgemeine Java-Themen 14
cool_brivk24 Klassen Klassen Aufruf Fehlgeschlagen Allgemeine Java-Themen 14
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
S Klassen Abstrakte Klassen Allgemeine Java-Themen 5
T Log4J - Deaktivierung für einzelne Klassen Allgemeine Java-Themen 7
Tommy Nightmare Klassen Globale Klassen erstellen Allgemeine Java-Themen 7
X Klassen aus jar in jar Laden Allgemeine Java-Themen 1
S Klassen Klassen "virtuell" erstellen Allgemeine Java-Themen 5
J Aus mehreren Klassen ein Datei ausführbare machen Allgemeine Java-Themen 6
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
Sin137 Struktur der Klassen & Package Allgemeine Java-Themen 2
G Klassen und interne Klassen Allgemeine Java-Themen 1
S Klassen übergeben Allgemeine Java-Themen 13
C Klassen und Konstruktor Allgemeine Java-Themen 2
S Classpath Wie kann ich Java-Library Klassen "verstecken"..? Allgemeine Java-Themen 4
A Java speech - 2 Klassen Allgemeine Java-Themen 1
V Wie kann ich die Fragen mit den anderen Klassen verbinden? Allgemeine Java-Themen 1
T Schlüsselworte mehrere public-Klassen in einem Paket Allgemeine Java-Themen 7
V Klassenname von allen Klassen mit einer bestimmten Eigenschaft bekommen Allgemeine Java-Themen 2
B Classpath Eclipse findet importierte Klassen nicht Allgemeine Java-Themen 1
C DBConnection als Methode in mehreren Klassen Allgemeine Java-Themen 4
C Arten von Klassen Allgemeine Java-Themen 3
7 Verbinden von Mehreren Klassen Allgemeine Java-Themen 29
A Klassen ein Interface aufzwingen Allgemeine Java-Themen 4
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
D Problem bei Vererbung abstrakter Klassen Allgemeine Java-Themen 6
M Interface Generische Klassen mit mehreren Typen überschreiben Allgemeine Java-Themen 0
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
O Klassen Programm in Klassen unterteilt, werte werden nicht mehr übernommen Allgemeine Java-Themen 3
J C++ Projekt (QT) in Java mit Klassen (nicht imperativ) nutzen (BridJ? JavaCPP? SWIG? JNA? JNI?) Allgemeine Java-Themen 2
T Datentypen Eine Liste - verschiedenen Klassen - eine Abstracte Klasse Allgemeine Java-Themen 3
S .jar hat nicht alle Klassen ??? Allgemeine Java-Themen 10
S Polymorphie Polymorphismus bei Abstrakten Klassen Allgemeine Java-Themen 2
S Tool um mehrere Klassen in einer Klasse vereinen? Allgemeine Java-Themen 6
T Wie kann ich alle existierenden Java-Klassen anzeigen lassen? Allgemeine Java-Themen 10
Landei Welche Klassen fehlen im JDK? Allgemeine Java-Themen 18
S Kapselung Statische Helper Klassen Allgemeine Java-Themen 5
A Vererbung Klassen-Downcasting wirft ClassCastException Allgemeine Java-Themen 2
N Java Klassen mit ID Allgemeine Java-Themen 21
antonbracke Klassen Klassen gegenseitig laden Allgemeine Java-Themen 4
R SecurityManager für einzelne Klassen/Threads? Allgemeine Java-Themen 38
T Java Klassen aus externer .jar laden und ausführen Allgemeine Java-Themen 3
S JPA und Entity-Klassen: Wert ungültig Allgemeine Java-Themen 6
M OO / Klassen / Projektstruktur Allgemeine Java-Themen 5
O Klassen werden nicht importiert Allgemeine Java-Themen 3
E selber Klassen kompilieren/ prüfen Allgemeine Java-Themen 5
Z Abstrakte Klassen /Interface Allgemeine Java-Themen 5
A Klassen und JLabel's Allgemeine Java-Themen 12
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
M Methoden/Klassen für andere Projekte Allgemeine Java-Themen 4
J Suche: Tool zum Auffinden gleichnamiger Klassen (Name und Package gleich) in unteschiedlichen JARs Allgemeine Java-Themen 5
E instanceof mit nicht öffentlichen Klassen Allgemeine Java-Themen 2
D Datentypen Typbestimmung unbekannter Wrapper-Klassen Allgemeine Java-Themen 5
S Klassen in einer Schleife durchlaufen Allgemeine Java-Themen 11
X Generic muss zwei Klassen/Interfaces erfüllen Allgemeine Java-Themen 5
N Vergleich eigener Klassen Allgemeine Java-Themen 5
M Klassen Array aus Klassen bestimmter Klassen ? Allgemeine Java-Themen 11
C OOP Klassen mit "Eigenschaften" Allgemeine Java-Themen 10
H Klassen kommunizieren lassen Allgemeine Java-Themen 3
A Problem bei Serialisierung von Bibliotheks-Klassen Allgemeine Java-Themen 6
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
T Classpath Klassen dynamisch erstellen Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben