Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Guten Abend
Ich suche eine Möglichkeit beim Coden mit Eclipse festzustellen was eine Klasse die übergeben wird braucht und trotzdem nicht jedes einzelne Teilstück dafür übergeben werden muss.
Also:
Ich habe Klassen K1 und K2 und K3
K2 braucht K1 als Übergabewert dabei sollte allerdings festgestellt werden dass alle notwendigen Daten von K1 gesetzt wurden die K2 braucht. Das Problem bei K3 muss das auch festgestellt werden allerdings müssen da andere Parameter von K3 zwingend sein. Wie kann ich Eclipse nun sagen: gibt K1 noch diesen und diesen Parameter sonst gibt es Fehler bzw. dass es mich gar nicht erst Kompilieren lässt.
Du kannst Konstruktoren überladen und auch innerhalb der Konstruktoren Validierungen vornehmen.
Ansonsten zwingt auch noch "final" als Modifizierer, einen Wert zu initialisieren. Allerdings kann er dann auch später nicht mehr bearbeitet werden.
Man kann auch mit Interfaces oder dem Modifizierer "abstract" Klassen zwingen, bestimmte Methoden zu implementieren.
Ohne ein konkretes Beispiel, was du vorhast, lässt sich eigentlich nur ins Blaue raten.
Hey @Saheeda vielen Dank für deine Antwort.
Hier mein Vorhaben:
Hier sollte Data mitgeben werden
Java:
/*
* You have to initChat before you write something
* its like the Chat login
*/
public initChat(Data data){
}
Und das ist Data
Was nun wichtig ist... Data muss username und authKey zwingend abgefüllt haben und das möchte ich angezeigt kriegen.
Java:
public interface Data {
public String username = "";
public String authKey = "";
public String serverIP = "";
public int serverPort = 0;
public String channelName = "";
public ChatData chatData = new ChatData();
public ArrayList<Socket> sendSockets = null;
public ArrayList<Socket> receiveSockets = null;
}
Was ich auch schon angedacht habe ist Data bei initChat zu implementieren allerdings gibt es da folgendes Problem:
Java:
public initChat(Data data){
Data = data;
}
das funktioniert nicht, da ich Data nicht mit data abfüllen kann
was ist initChat? Es sieht aus wie ein Konstruktor, könnte vom Namen her aber auch ein Methode sein. Wenn es ein Kontruktor sein soll: Klassennamen werden groß geschrieben.
Im Falle einer Methode fehlt der Rückgabewert.
Ich würde einfach abfragen, ob die Attribute von Data gesetzt sind, oder nicht:
Java:
public initChat(Data data){
if(data.username.equals("") || data.authKey.equals("")){
throw new IllegalArgumentException("Felder dürfen nicht leer sein.");
}
}
Noch schöner wäre es aber, das bereits vorm Initialisieren abzufragen und den Konstruktor erst aufzurufen, wenn er definitiv mit gültigen Daten befüllt wird:
Java:
public static void validate(Data data){
if(!data.username.equals("") && !data.authKey.equals("")){
new initChat(data.username, data.authKey);
}
}
Java:
public initChat(Data data){
Data = data;
}
Das kann nicht funktionieren. Du kann keinen Datentyp mit Werten befüllen.
Wenn dann so:
Java:
class User{
String username;
public User(String username){
this.username = username;
}
}
Gibts zu Data noch eine konkrete Implementierung oder nur das Interface?
Nimms mir nicht übel, aber ich habe den Eindruck, bei dir fehlen einige Grundlagen.
Aber ich hätte diese Information eigentlich gerne schon während dem Programmieren.
Und ja ich bin noch Anfänger. Ich mache momentan ein Studium als Informatiker und versuche mir mit solchen klein Projekten die Grundlagen beizubringen da meine Klassenkameraden momentan lernen was Funktionen sind etc.
hm ja habe es verpennt die Klasse groß zuschreiben danke