Angeblich Not applicable for Arguments

fabipfolix

Mitglied
In meinem Programm kann man ein Datum, per JavaFX DatePicker, auswählen, welches dann per Setter im Objekt eingetragen wird. Allerdings bekomme ich den Fehler:
Code:
The method setFZ1(Date, Date) in the type Mini is not applicable for the arguments (LocalDate, LocalDate)
Obwohl die Methode existiert:
Java:
public void setFZ1(LocalDate a1, LocalDate e1) {
        dA1 = a1;
        dE1 = e1;
    }

Hier noch die aufrufende Methode:
Java:
@FXML
    void submitFZ1(ActionEvent event) {
        dateA1= dPA1.getValue();
        dateE1= dPE1.getValue();
      
        if(dPA1!=null&&dPE1==null) {
            dateE1=dateA1;
        }
        if(dateA1!=null) {
            mtd.setFZ2(dateA1,dateE1);
        }
    }

Ich hoffe jemand kann mir sagen, wo der Fehler liegt :D
 

Robat

Top Contributor
Ein wenig Offtopic:
Ich würde Variablennamen / Methodennamen / Klassennamen vermeiden, die sich nur in einem Buchstaben / einer Zahl am Ende/Anfang unterscheiden vermeiden.
Sowas kann leicht zu Fehlern führen weil man gern mal die falsche Methode/Variable/Klasse auswählt. Außerdem ist es, gerade später im Hinblick auf Teamarbeit, für die anderen schwerer so den Code zu lesen / zu verstehen.

Nimm lieber aussagekräftige Namen aus denen jeder gleich ableiten kann was eigentlich dahinter steckt.
 

fabipfolix

Mitglied
Das ist klar, allerdings benutze ich in meinem Code ausschließlich LocalDate. Soweit ich weiß ist auch der Output des DatePickers ein LocalDate.

Und bist du sicher, dass die Fehlermeldung stimmt? In dem Aufrufercode, den du zeigst, wird ja setFZ2 und nicht setFZ1 aufgerufen.

setFZ1 und setFZ2 sind nahezu das gleiche. Das Problem tritt bei beiden Methoden auf.
Hier trotzdem der Code, in welchem setFZ1 aufgerufen wird:
Java:
@FXML
    void submitFZ1(ActionEvent event) {
        LocalDate dateA1,dateE1;
        dateA1= dPA1.getValue();
        dateE1= dPE1.getValue();
     
        if(dPA1!=null&&dPE1==null) {
            dateE1=dateA1;
        }
        if(dateA1!=null) {
            mtd.setFZ1(dateA1,dateE1);
        }
    }
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
Bist du außerdem 100% sicher, dass du in deinem ersten Post die Methode Mini.setFZ1() gezeigt hast, und nicht setFZ1 einer anderen Klasse? Wenn der Compiler sich beschwert, dass Mini.setFZ1(Date, Date) nicht mit LocalDate aufgerufen werden kann, dann wird das ja stimmen, bzw. die Methode wird dann wohl mit den Parametertypen Date und Date deklariert worden sein. Zeig am besten mal die komplette Definition der Klasse Mini.
 

Robat

Top Contributor
Naja manchmal gibt es mit IDEs merkwürdige Bugs.. da hilft tw. Projekt schließen und neu in der IDE öffnen, IDE schließen, "Clean & Build" o.ä.
 

fabipfolix

Mitglied
Hier die komplette Klasse Mini:
Java:
package application;

import java.time.LocalDate;


public class Mini {
    public String name;
    public int birthYear;
    public int max=10;
   
    LocalDate dA1,dE1,dA2,dE2,dA3,dE3;
   
    public Mini(String n, double a, int m) { //Ohne FZ
        name = n;
        birthYear = (int)a;
        max = m;
    }
    public Mini(String n, double a, int m, LocalDate idA1, LocalDate idE1) {
        name = n;
        birthYear = (int)a;
        max = m;
        dA1 = idA1;
        dE1 = idE1;
       
    }
   
   
    public Mini(String n, double a, int m, LocalDate idA1, LocalDate idE1, LocalDate idA2, LocalDate idE2) {
        name = n;
        birthYear = (int)a;
        max = m;
        dA1 = idA1;
        dE1 = idE1;
        dA2 = idA2;
        dE2 = idE2;
    }
   
   
    public Mini(String n, double a, int m, LocalDate idA1, LocalDate idE1, LocalDate idA2, LocalDate idE2, LocalDate idA3, LocalDate idE3) {
        name = n;
        birthYear = (int)a;
        max = m;
        dA1 = idA1;
        dE1 = idE1;
        dA2 = idA2;
        dE2 = idE2;
        dA3 = idA3;
        dE3 = idE3;
    }
   
    //Setter
    public void setName(String newName) {
        name=newName;
    }
    public void setBirthYear(int newBirthYear) {
        birthYear = newBirthYear;
    }
   
    public void setMaxMini(int m) {
        max =m;
    }
   
    public void setFZ1(LocalDate a1, LocalDate e1) {
        dA1 = a1;
        dE1 = e1;
    }
    public void setFZ2(LocalDate a2, LocalDate e2) {
        dA2 = a2;
        dE2 = e2;
    }
    public void setFZ3(LocalDate a3, LocalDate e3) {
        dA3 = a3;
        dE3 = e3;
    }
   
    //Getter
    public String getName() {
        return name;
    }
    public int getBirthYear() {
        return birthYear;
    }
   
    public void printData() {
        System.out.println("Name: "+name +"| Jahrgang: "+birthYear);
    }
    public int getMaxMini() {
        return max;
    }
   
    @Override
    public String toString() {
        return birthYear+" "+name +" "+max+" "+dA1 +"->"+dE1;
    }
   
}
 

Neue Themen


Oben