Funktion mit beliebigen Zahlentypen

Wolfsbein

Erfahrenes Mitglied
Halloo

ich brauche eine Funktion, nennen wir sie compute(), die zwei Zahlenparameter empfängt. Dabei soll es egal sein, welcher Zahlentyp das ist. Er soll nur beidemale gleich sein. Wenn die Parameter Klassen wären, würde ich es mit einem Interface machen. Nur leider ist dem nicht so. Gibt es also einen Obertyp für Zahlen, den ich verwenden kann? Danke.
 
Alle Klassen in Java, die Zahlen representieren (Integer, Float usw), erben von der abstrakten Klasse java.lang.Number.
 
Zuletzt bearbeitet:
Hallo!

Unter Java 5 kannst du dank Auto-Boxing (oder leider) folgendes machen:
Code:
public class NumberTest {

	public static void main(String[] args) {
		new NumberTest().doIt();
	}

	private void doIt() {
		System.out.println(test(new Integer(1),new Integer(1)));
		System.out.println(test(90L,10L));
		System.out.println(test(1.0D,3.141592654D));
		System.out.println(test(10,20));
		
	}
	
	private Number test(Number a, Number b){
		if(a instanceof Integer && b instanceof Integer)
			return plus((Integer)a,(Integer)b);
		if(a instanceof Long && b instanceof Long)
			return plus((Long)a, (Long)b);
		if(a instanceof Double && b instanceof Double)
			return plus((Double)a, (Double)b);
		return new Integer(0);
	}
	
	private int plus(int a, int b){
		return a + b;
	}
	
	private double plus(double a, double b){
		return a + b;
	}
	
	private long plus (long a, long b){
		return a + b;
	}
}

Ausgabe:
2
100
4.141592654
30

Gruß Tom
 
Java 5 kann ich leider nicht verwenden. Und die Numberklasse wäre eine Lösung. Nur leider nicht für mich. Also muss ich das ganze auf einen Zahlentyp beschränken. Trotzdem danke.
 
Das Programm ist nur für die Uni. Und weil der Code automatisch kontrolliert wird, sind die Schnittstellen fest. Also das Programm schreibt nun mal keinen Integer, sondern einen int in die Parameterliste. Und der Compiler ist ein 1.4er.
Die Methoden überladen halte ich für eine sehr schlechte Idee, da es nicht nur eine ist.
 
Viele alternativen bleiben dir aber nicht übrig....
Kommen denn dort nur Referenz Typen vor oder können die Methoden auch Primitive als Parameter bekommen?

...ausserdem hast du nur von einer Methode gesprochen:
ich brauche eine Funktion, nennen wir sie compute(), die zwei Zahlenparameter empfängt.

Gruß Tom
 
Zurück