Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen.

JavaAnfänger72

Aktives Mitglied
Der nachstehende Code weist die Funktion private boolean isValide auf welche sich in einer Klasse
InternetMailAddress {} befindet, welche sich wiederum in der Funktion void senden() der Klasse Email{} befindet. Wie lässt sich in der Funktion senden() der Defaultkonstruktor der lokalen Klasse InternetMailAddress aufrufen? Die vorstehende Verschachtelung ist aufgabenspezifische Vorgabe, sie ist nicht auf meinem Mist gewachsen. Ausprobiert habe ich in der Funktion senden() bisher folgende Aufrufe:

InternetMailAddress internetMailAddress = new InternetMailAddress();
InternetMailAddress internetMailAddress = new Email().senden(email).new InternetMailAddress();

Email.InternetMailAddress internetMailAddress = new Email().new InternetMailAddress();

Der Code ist bei weitem nicht Final, mir geht es nur darum wie sich Konstruktoren der lokalen Klasse InternetMailAddress {} in der Funktion senden aufrufen lassen.

Vielen dank für jede Antwort !!!


Code:
public class Email {  
    static String betreff;
    static String text;
    static String empfaenger;
    static String absender;
    public Email() {
    }
    public Email(String str1, String str2, String str3, String str4) {
        betreff = str1;
        text = str2;
        empfaenger = str3;
        absender = str4;
    }
    String getBetreff(){
        return betreff;
    }
    String getText(){
        return text;
    }
    String getEmpfaenger(){
        return empfaenger;
    }
    String getAbsender(){
        return absender;
    }
    void senden(Email email){
      
        empfaenger = email.getEmpfaenger();
        absender = email.getAbsender();
       
        /* ??? */
        Email.InternetMailAddress internetMailAddress = new Email().new InternetMailAddress();
           
        class InternetMailAddress{
          
            String empaenger;
            String absender;
  
            public InternetMailAddress() {              
            }          
            private boolean isValid(){
              
                System.out.println(empfaenger);
                System.out.println(absender);
              
                return true;
                //return false;
            }
        }
        return;
    }
}
 
Zuletzt bearbeitet:
Du definierst die Klasse InternetMailAddress in einer Methode, wenn du die so instanziieren möchtest wie du es dir vorstellst kopier die Klassendefinition irgendwo über die Variablen von EMail.
 
Hallo nvidia,
Ich bin Anfänger und komm nicht so schnell mit, wenn ich das so mache wie Du empfiehlst, rufe ich dann überhaupt noch eine Instanz der Klasse InternetMailAddress auf, welche in der Funktion senden definiert ist?
Wie gesagt die Verschachtelung ist aufgabenspezifische Vorgabe.
 
Naja du kannst kein Objekt erzeugen, da noch keine Klasse davon deklariert wurde. Was funktioniert:
Java:
void senden(Email email) {
 
  empfaenger = email.getEmpfaenger();
  absender = email.getAbsender();
 
  class InternetMailAddress {
   
    String empaenger;
    String absender;
   
    public InternetMailAddress() {
    }
   
    private boolean isValid() {
     
      System.out.println(empfaenger);
      System.out.println(absender);
     
      return true;
      // return false;
    }
  }
  InternetMailAddress internetMailAddress = new InternetMailAddress();
  internetMailAddress.isValid();
  return;
}

Geschweige davon, ich glaube die static modifier sind hier falsch!
 

Zurück
Oben