Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Methode einer Klasse in einer Klasse aufrufen

Mitglied: tomaschku

tomaschku (Level 1) - Jetzt verbinden

13.05.2018, aktualisiert 16.05.2018, 1039 Aufrufe, 5 Kommentare

Hallo Leute!

Heut habe ich mal wieder ein Problem:
Ich habe in der Klasse "Haupt" eine reset() Funktion, die die reset() Funktionen der untergeordneten Klasse "starter" ausführen soll:

01.
public class Haupt {
02.
  Haupt() {
03.
    xyz = 0;
04.
  };
05.
  
06.
  public class starter {
07.
    starter() {
08.
      ex = 0;
09.
    };
10.
    public void setEX(int _in) { ex= _in; };
11.
    public int getEX() { return ex; };
12.
    public void reset() {
13.
      ex= 0;
14.
    };  
15.
    private int ex;
16.
  };
17.

18.
  public void setXYZ(int _in) { xyz = _in; };
19.
  public int getXYZ() { return xyz; };
20.
  public void reset() {
21.
    xyz = 0;
22.
    starter.reset();
23.
  };  
24.
  private int xyz;
25.
};
Doch es möchte nicht funktionieren (NullPointerException beim Aufruf der Funktion). Da ich Java noch nicht lange benutze und auch durch googeln nichts brauchbares rauskam, weiß ich jetzt nicht mehr weiter.
Welche Regel habe ich missachtet?

EDIT:
Man kann natürlich "starter" außerhalb von "Haupt" verschieben und dann in Haupt einfach
01.
starter Starter;
schreiben, aber ich sehe da 2 Probleme:
1. Die starter Klasse wäre public, was aus mehreren Gründen unpraktisch ist und
2. es wird dann auch unübersichtlich.

Mit freundlichen Grüßen
tomaschku
Mitglied: 136166
13.05.2018, aktualisiert um 15:08 Uhr
starter.reset();
Du rufst eine Funktion von einer Klasse auf von der es keine Instanz gibt. Also erst eine Instanz dieser Klasse erzeugen und dann die Funktion auf dieser Instanz aufrufen, oder eben die Klasse als static deklarieren dann ist ein direkter Aufruf dessen Member möglich.
https://stackoverflow.com/questions/7486012/static-classes-in-java?utm_m ...
Bitte warten ..
Mitglied: emeriks
13.05.2018, aktualisiert 14.05.2018
Hi,
ich kenne mich zwar nicht konkret mit Java aus. Aber ich denke, dass Du die Klasse "Starter" erst einmal instantiieren oder diese als "static" deklarieren musst.

Also entweder in Klasse "Haupt" ein
01.
  private Starter MyStarter;
einbauen und dann aufrufen über
01.
 ...
02.
MyStarter.Reset
03.
...
oder in Klasse "Starter"
01.
public static void reset() 
02.
.....

deklarieren. Wobei ich jetzt aber keine Ahnung habe, ob und wie sich das bei Java mit diesem "static" verhält.

E.
Bitte warten ..
Mitglied: SlainteMhath
14.05.2018 um 10:21 Uhr
Moin,

eine Static Methode geht mEn an der Stelle nicht, da die Methode "starter.reset()" mit einer private Variablen "ex" interagiert. Also muss eine Instanz her.

lg,
Slainte
Bitte warten ..
Mitglied: tomaschku
16.05.2018, aktualisiert um 18:41 Uhr
Im zweitem Beitrag des Linkes bin ich auf folgenden Code gestoßen, der aber so nicht compiliert. Bei allen statics schreibt es "static is only allowed in constant variable declerations."

01.
public final class MyStaticClass {
02.
    private MyStaticClass () {
03.
        myStaticMember = 1;
04.
    }
05.
    private static int myStaticMember;
06.
    public static void setMyStaticMember(int val) {
07.
        myStaticMember = val;
08.
    }
09.
    public static int getMyStaticMember() {
10.
        return myStaticMember;
11.
    }
12.
    public static int squareMyStaticMember() {
13.
        return myStaticMember * myStaticMember;
14.
    }
15.
}
Auch final bei der Klasse und private beim Konstruktor machten da keinen Unterschied.
Beim entfernen der statics compiliert es zwar, kriege aber beim Aufruf von .reset() eine NullPointerException. (Keine Instanz)
Bitte warten ..
Mitglied: SlainteMhath
LÖSUNG 17.05.2018 um 08:52 Uhr
Moin,

nochmal: "static" Methoden können nicht auf non-static Variablen/Methoden der Klasse zugreifen, da alle non-statics erst mit der Instanzierung der Klasse "entstehen". Ohne Instanzierung wird auch kein Konstruktur ausgeführt, also deine Varaible "myStaticNumber" nie mit der "1" gefüllt.

So in etwa:

01.
public final class MyStaticClass { 
02.
  public static int myStaticMember = 1;
03.

04.
  public static int staticMethod(int v) { 
05.
     return MyStaticClass.myStaticMember ^ v;
06.
 }
07.
}
08.

09.
system.out.println(MyStaticClass.myStaticMember);
10.
system.out.println(MyStaticClass.staticMethod(5));
Bitte warten ..
Ähnliche Inhalte
Webentwicklung

CORS customheaders - 405 Method Not Allowed

Frage von Sirius91Webentwicklung1 Kommentar

Es gibt einen WCF-Webservice in C# geschrieben mit zwei Endpunkten (SOAP + Rest). Beide Dienste benötigen ein benutzerdefiniertes Header-Feld ...

Batch & Shell

PS Ver. 5 und Method invocation failed because System.Management.Automation PSCustomObject does not contain a method named Where

gelöst Frage von pixel0815Batch & Shell3 Kommentare

Moin zusammen, ich hab folgendes Skript gefunden, ich finde es ziemlich cool. Alle benötigten Module hab ich auch, allerdings ...

Java

Aufruf der web.xml

gelöst Frage von qwertz1Java3 Kommentare

Hallo, ich habe einen Server, der diverse Java-Servlets hat. Habe nur http-Zugriff auf diesen Server. Die Servlets kann man ...

Server-Hardware

Aufruf Zeichen leuchtet gelb

gelöst Frage von jarimlimServer-Hardware22 Kommentare

Auf einem IBM x3850 System auf der vordere seite leuchtet ein AufrufZeichen gelb. was beduetet das ? Vielen Dank

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 22 StundenInternet4 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 1 TagWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 1 TagWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 1 TagSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell22 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Verschlüsselung & Zertifikate
Netzwerkfreigabe Verschlüsselung
Frage von grill-itVerschlüsselung & Zertifikate20 Kommentare

Moin zusammen, sicher nutzen hier die ein oder anderen ein Produkt zur Verschlüsselung von Netzwerkfreigaben/-laufwerken auf denen hochsensible Daten ...

Debian
OpenSSH Login mit Public Key schlägt fehl, mit Passwort funktioniert
gelöst Frage von DKowalkeDebian19 Kommentare

Hallo zusammen, ich hatte hier schon nach einer Anleitung für einen SFTP Server mit Linux gefragt, habe dort auch ...

Windows Server
Client in die Domäne einbinden - Allgemeine Frage dazu
gelöst Frage von RalphTWindows Server19 Kommentare

Moin, ich habe 2 DCs in einer Hauptstelle und 2 DCs in einer Nebenstelle. Ich bringe in der Hauptstelle ...