hallo
warum der Variable param ein Instanz von die Klasse Comparable? Weil in der Klasse Textpassage die Schnittstelle Comparable implementiert wurde?
danke kostonstyle
warum der Variable param ein Instanz von die Klasse Comparable? Weil in der Klasse Textpassage die Schnittstelle Comparable implementiert wurde?
Code:
/*
* Palindromtest.java - Mehrere Schnittstellen implementieren
*
*/
package pkg;
import java.util.Scanner;
import java.io.Console;
interface Umkehrbar<T> {
// erzeugt eine umgekehrte Kopie des Objekts und liefert diese zur�ck
T umkehren();
}
class Textpassage implements Umkehrbar<Textpassage>, Comparable<Textpassage> {
public String text;
public Textpassage(String s) {
text = s;
}
public Textpassage umkehren() {
char[] tmp = new char[text.length()];
// String umkehren
for (int i = 0; i < text.length(); ++i) {
tmp[i] = text.charAt(text.length()-i-1);
}
// umgekehrte Textpassage zur�ckliefern
return new Textpassage(new String(tmp));
}
public int compareTo(Textpassage obj) {
return text.compareTo(obj.text);
}
}
class Palindrom {
static boolean palindrom(Umkehrbar<?> param) {
Comparable<Object> obj1 = null, obj2 = null;
if (param instanceof Comparable) {
obj1 = (Comparable) param;
obj2 = (Comparable) param.umkehren();
} else {
System.console().printf(" palindrom()-Argument konnte nicht "
+ "in Comparable-Typ umgewandelt werden.\n");
System.exit(0);
}
if( obj1.compareTo(obj2) == 0)
return true;
else
return false;
}
}
class PalindromTest {
public static void main(String[] args) {
/*Console cons = System.console();
cons.printf("\n");
// Zu pr�fenden Text einlesen
cons.printf(" Geben Sie einen einzeiligen Text ein: ");
Scanner sc = new Scanner(cons.reader());
String text = sc.nextLine();
cons.printf("\n");*/
String text = "hallo";
Textpassage t = new Textpassage(new String(text));
if (Palindrom.palindrom(t) == true)
System.out.println(" %s ist ein Palindrom! \n" + t.text);
else
System.out.println(" %s ist kein Palindrom! \n" + t.text);
System.out.println("\n");
}
}