Klassen constructor Rückgabewert

Nookie

Mitglied
Hallo.

Ich habe eine kleine Klasse entworfen welche ich mit einer Minimum und Maximum zahl füttern kann und die mir anschliessend einen Wert der dazwischen liegt zurückgeben soll.

Ich rufe die Klasse so auf:

rand rando = new rand(min,max);

nun muss ich aber noch explizit die funktion rand.roll() aufrufen damit meine Zufallszahl zurückkommt da der Compiler scheinbar keinen constructor mit Rückgabewert zulässt?

Wie machen andere Klassen sowas?

mfg
 

TKausL

Top Contributor
nun muss ich aber noch explizit die funktion rand.roll() aufrufen damit meine Zufallszahl zurückkommt da der Compiler scheinbar keinen constructor mit Rückgabewert zulässt?

Wie machen andere Klassen sowas?

mfg

Das ist richtig. Entweder erstellst du dir eine Instanz der Klasse und rufst dann roll() auf oder aber du machst die Methode statisch, was bei Utility-Klassen erlaubt ist. Dann könntest du die Methode mit DeineKlasse.methode(min, max); aufrufen und auch einen Rückgabewert entgegennehmen.
 
S

Spacerat

Gast
Der "Rückgabewert" eines Konstruktors ist immer die Klasse.
:autsch: Hoffentlich nicht... ich hätte nämlich manchmal auch gerne Instanzen einer Klasse. ;)
z.B. eine der Klasse RandomNumber
Java:
public class RandomNumber extends Number implements Comparable<Number> {
	private static final long serialVersionUID = 6539973018780199660L;

	private final double value;

	public RandomNumber(double min, double max) {
		double mn = Math.min(min, max);
		double mx = Math.max(min, max);
		double range = mx - mn;
		value = Math.random() * range + mn;
	}

	@Override
	public int intValue() {
		return (int) value;
	}

	@Override
	public long longValue() {
		return (long) value;
	}

	@Override
	public float floatValue() {
		return (float) value;
	}

	@Override
	public double doubleValue() {
		return value;
	}

	@Override
	public int compareTo(Number o) {
		return Double.compare(value, o.doubleValue());
	}

	@Override
	public boolean equals(Object obj) {
		if(this == obj) {
			return true;
		}
		if(obj instanceof Number) {
			Double d = ((Number) obj).doubleValue();
			return Double.valueOf(value).equals(d);
		}
		return false;
	}

	@Override
	public int hashCode() {
		return Double.valueOf(value).hashCode();
	}

	@Override
	public String toString() {
		return String.valueOf(value);
	}
}
[OT]Fehlt nur noch, dass man in der Klasse Number abstrakte Metoden für +, -, *, / und % definiert, welche die JVM entsprechend aufrufen kann, wenn im Code z.B. [c]Number a = (Number) b + (Number) c[/c] auftaucht, dann könnte man mit allen Numbers rechnen statt nur mit Integer, Double usw. Aber so wie's jetzt ist, kommt man leider um ein <Number>.doubleValue() o.ä. leider nicht drum rum.[/OT]
 
Zuletzt bearbeitet von einem Moderator:

xehpuk

Top Contributor
Wenn wir ehrlich sein wollen, hat jeder Konstruktor den Rückgabetyp
Code:
void
. Aber das wird nun wohl mehr verwirren als helfen.
 
S

Spacerat

Gast
Wenn wir ehrlich sein wollen, hat jeder Konstruktor den Rückgabetyp
Code:
void
. Aber das wird nun wohl mehr verwirren als helfen.
Das verwirrt insoweit, dass es nicht stimmt. Denn wenn wir ganz ehrlich sind können wir Konstruktoren nicht mal direkt aufrufen, das geschieht nämlich mit dem Schlüsselwort new (oder per Reflection) und dieses liefert entweder ein Objekt (eine Instanz) der Klasse zurück oder es fliegt 'ne Exception. Und wenn wir noch ehrlicher sind, klingt Schandros Aussage auch mehr nach 'nem flüchtigen Versprecher, denn im Gegensatz zu "Klasse", ist "void" wahrhaftig grober Unfug.
Wie mag so ein Konstruktor wohl eigentlich aussehen?
Java:
class MyClass {
  public MyClass MyClass() {
  }

  // oder
  public void MyClass() {
  }

  // ist das alles Quark? Sieht er in Wirklichkeit etwa so aus?
  public static MyClass <init>(Object ... parameter) {
  }
}
 
Zuletzt bearbeitet von einem Moderator:

xehpuk

Top Contributor
Dann schau doch einfach in den Bytecode, wenn du mir nicht glaubst. Der Standardkonstruktor einer von Object erbenden Klasse sieht so aus:
Java:
public void <init>() {
	0: aload_0
	1: invokespecial java/lang/Object."<init>":()V
	4: return
}
Nur über Reflection lässt er sich als normale Methode mit dem Namen "<init>" nicht ansprechen.
 

Schandro

Top Contributor
Euch ist schon bewusst das wir uns hier um subforum "Java Basics - Anfänger-Themen" befinden? Lasst bitte dieses ganze Gerede über Bytecode und Reflection usw... Das interessiert den Fragesteller zurecht nicht, und wenn dann verwirrt es eher als das es irgendwas nützen würde. Schlussendlich ist nur wichtig das
Code:
new Klasse(...)
immer eine Instanz der Klasse zurückgibt. Ob das nun 100% korrekt technisch ausgedrückt ist oder nicht interessiert nicht.
 

Noctarius

Top Contributor
Dann schau doch einfach in den Bytecode, wenn du mir nicht glaubst. Der Standardkonstruktor einer von Object erbenden Klasse sieht so aus:
Java:
public void <init>() {
	0: aload_0
	1: invokespecial java/lang/Object."<init>":()V
	4: return
}
Nur über Reflection lässt er sich als normale Methode mit dem Namen "<init>" nicht ansprechen.

Aber auch nur weil der NEW Bytecode vorher die Instanz erzeugt und dann der Konstruktor aufgerufen wird :p *klugs*******
 
T

tröööt

Gast
man könnte auch noch zwischen clinit und init unterscheiden ...
in clinit wird dann das ausgeführt was im source im [c]static { }[/c] block der klasse steht ... zumindest so mal auf StackOverflow gelesen ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
U Interface | constructor injection Java Basics - Anfänger-Themen 5
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
S Copy - Constructor vs clone() Java Basics - Anfänger-Themen 20
F The constructor Vehikel(String, int) is undefined warum?? Java Basics - Anfänger-Themen 4
L constructor cannot be applied... Java Basics - Anfänger-Themen 22
L Constructor is undefined Java Basics - Anfänger-Themen 4
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
S CSVReader funktioniert nicht ---- The Constructor CSVReader(String) is undefined Java Basics - Anfänger-Themen 4
M Vererbung - Cannot Find Symbol constructor... Java Basics - Anfänger-Themen 11
S The constructor File(URL) is undefined Java Basics - Anfänger-Themen 10
S Constructor und Main Methode Java Basics - Anfänger-Themen 3
S cannot find symbol, symbol: constructor Java Basics - Anfänger-Themen 2
B Copy-Constructor Java Basics - Anfänger-Themen 6
L Erste Schritte Super Constructor mit Array - Liste? Java Basics - Anfänger-Themen 15
T Cannot refer to an instance field xxx while explicitly invoking a constructor Java Basics - Anfänger-Themen 14
M Was macht bzw. was bringt ein constructor? Java Basics - Anfänger-Themen 12
S Problem beim Kompilieren - cannot find symbol - constructor() Java Basics - Anfänger-Themen 12
W Default Constructor Java Basics - Anfänger-Themen 4
H OOP java.sql.Date does not have a no-arg default constructor Java Basics - Anfänger-Themen 2
S Array of objects und ständige Constructor-Aufrufe Java Basics - Anfänger-Themen 4
D Unhandled Exception type IOException in Constructor Java Basics - Anfänger-Themen 1
D The constructor Bestellung(Bestellung.Produkt, Bestellung.Kunde) is undefined Java Basics - Anfänger-Themen 15
B Im Constructor anderen Constructor aufrufen Java Basics - Anfänger-Themen 13
U Implementierung Constructor Java Basics - Anfänger-Themen 7
J Hilfe mit Constructor Java Basics - Anfänger-Themen 3
G The constructor is ambiguous Java Basics - Anfänger-Themen 1
S BufferedWriter undefined constructor Java Basics - Anfänger-Themen 5
I call to super must be first statement in constructor Java Basics - Anfänger-Themen 3
C Ein letzter Fehler mit dem Constructor ! Java Basics - Anfänger-Themen 17
G Constructor & Graphics g Java Basics - Anfänger-Themen 5
N Constructor.isSynthetic() Java Basics - Anfänger-Themen 4
V Problem mit Symbol constructor Java Basics - Anfänger-Themen 5
G constructor auflösen? Java Basics - Anfänger-Themen 10
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
B Rückgabewert boolean Java Basics - Anfänger-Themen 8
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
L Methoden Rückgabewert Verbergen / nicht mit ausgeben Java Basics - Anfänger-Themen 4
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
R Boolean Methode Rückgabewert if() Java Basics - Anfänger-Themen 1
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
F Pascalsches Dreieck mit Rückgabewert Java Basics - Anfänger-Themen 2
D Dezimal zu Dual mit Rückgabewert Java Basics - Anfänger-Themen 39
Curtis_MC Methoden Rückgabewert von BiPredicate Java Basics - Anfänger-Themen 6
B Array als Rückgabewert in der Methode Java Basics - Anfänger-Themen 1
T Rückgabewert Problem Java Basics - Anfänger-Themen 2
A Methoden Rückgabewert Java Basics - Anfänger-Themen 6
I Referenz auf Klasse als Rückgabewert Java Basics - Anfänger-Themen 7
H Variablen Void und der Rückgabewert Java Basics - Anfänger-Themen 6
P Rückgabewert bestimmen Java Basics - Anfänger-Themen 17
J Warum wird Array durch Methode ohne Rückgabewert verändert? Java Basics - Anfänger-Themen 5
Tarrew Generics: Erste gemeinse Oberklasse als Rückgabewert Java Basics - Anfänger-Themen 1
I Rückgabewert einer Methode in anderer Klasse verwenden Java Basics - Anfänger-Themen 2
D for-Schleife Rückgabewert Java Basics - Anfänger-Themen 6
M Rückgabewert bei Methoden Java Basics - Anfänger-Themen 6
C Rückgabewert von Kontruktoren Java Basics - Anfänger-Themen 15
S Methoden Bei Liste als Rückgabewert: IndexOutOfBoundsException Java Basics - Anfänger-Themen 1
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
O Was verursacht den Rückgabewert false bei der Methode ready() eines BufferedReaders Java Basics - Anfänger-Themen 9
K Methode ohne Rückgabewert in boolean Methode ändern Java Basics - Anfänger-Themen 6
S Methoden Rückgabewert einer Methode als Parameter an eine andere Methode übergeben, geht das? Java Basics - Anfänger-Themen 5
S Rückgabewert null in Methode mit Thread Java Basics - Anfänger-Themen 2
M Anstatt 1 int Rückgabewert, mehrere Rückgaben mit Arraylist Java Basics - Anfänger-Themen 8
C Methoden Rückgabewert von statischer Methode ignorieren Java Basics - Anfänger-Themen 8
MiMa Methode mit Rückgabewert Java Basics - Anfänger-Themen 2
feardorcha Methodenaufruf Übergabe- und Rückgabewert Java Basics - Anfänger-Themen 5
T Variablen Rückgabewert aus einer Schleifen-Methode Java Basics - Anfänger-Themen 8
D Methode mit Rückgabewert Java Basics - Anfänger-Themen 5
K Rückgabewert einer Klassenmethode Java Basics - Anfänger-Themen 7
J Methoden mit und ohne Rückgabewert Java Basics - Anfänger-Themen 22
D Erste Schritte Als Rückgabewert Klasse Java Basics - Anfänger-Themen 5
D Rückgabewert Pixelgrabber Java Basics - Anfänger-Themen 3
S ArrayList und Rückgabewert Java Basics - Anfänger-Themen 2
T Methode - Rückgabewert Schreibweise Java Basics - Anfänger-Themen 6
S Interface Rückgabewert Java Basics - Anfänger-Themen 3
F if Anweisung mit Rückgabewert? Java Basics - Anfänger-Themen 4
I Rückgabewert von JSlider Java Basics - Anfänger-Themen 15
B Methoden, Rückgabewert und Verknüpfungen Java Basics - Anfänger-Themen 15
V OOP Klassen Methoden Rückgabewert Java Basics - Anfänger-Themen 15
C Datentypen Rückgabewert von "new FileInputStream" Java Basics - Anfänger-Themen 4
S Datentypen String mit fester Länge (Rückgabewert einer Methode) Java Basics - Anfänger-Themen 2
O Rückgabewert mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 10
G List als Rückgabewert einer rekursiven Methode (Baum) Java Basics - Anfänger-Themen 3
T Array als Rückgabewert einer Methode Java Basics - Anfänger-Themen 3
A Rückgabewert ändert sich? Java Basics - Anfänger-Themen 9
C Thread mit Rückgabewert? Java Basics - Anfänger-Themen 4
S Rückgabewert einer Instanzvariable Java Basics - Anfänger-Themen 2
K rückgabewert combobox Java Basics - Anfänger-Themen 15
M Methoden mit Rückgabewert Java Basics - Anfänger-Themen 4
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
C Null als Rückgabewert Java Basics - Anfänger-Themen 7
O String[] Array als Rückgabewert Java Basics - Anfänger-Themen 7
G setValueAt Rückgabewert verarbeiten? Java Basics - Anfänger-Themen 12
P Methode mit 2 unterschiedlichem Rückgabewert Java Basics - Anfänger-Themen 10
L Prozess rückgabewert? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben