Announcement

Collapse
No announcement yet.

clone() schlägt fehl...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • clone() schlägt fehl...

    Hallo zusammen

    Könnte mir jemand sagen, wo der Fehler hier liegt:

    Code:
    public class Employee {
    
    	static int age;
    	static String name;
    	
    	public static void main(String[] args) {
    	
    		Employee susi = new Employee(); 
    		susi.age  = 29; 
    		susi.name = "Susi"; 
    		 
    		Employee dolly = susi.clone(); 
    		 
    		System.out.println( dolly.name + " is " + dolly.age ); // Susi is 29		
    		
    
    	}
    
    }
    hat es etwas mit der static mehode zu tun? was wäre den die lösung?


    merci!

    gruss
    isa

  • #2
    Interface Cloneable wird benötigt

    Hallo !

    Deine Klasse Employee muß das Interface Cloneable implementieren. Die Basisklass Object leifert zwar die clone()-Methode, implementiert aber nicht das benötigte Interface (eigentlich eine ziemlich blöde Lösung). Interessant ist auch, dass das Interface keine Methode clone() bereitstellt !?!. (siehe auch JavaDoc für Cloneable)

    So könnte also Deine Klasse aussehen:
    public class Employee implements Cloneable{

    static int age;
    static String name;

    public static void main(String[] args) throws CloneNotSupportedException {

    Employee susi = new Employee();
    susi.age = 29;
    susi.name = "Susi";

    Employee dolly = (Employee)susi.clone();

    System.out.println( dolly.name + " is " + dolly.age ); // Susi is 29
    }
    }

    Übrigens: Das Klonen von statischen Variablen macht keinen Sinn.
    Statische Variablen sind im Gegensatz zu anderen Variablen einer Klasse nicht an eine von ihr gebildeten Instanz gebunden. Das heißt, dass statische Variablen immer zur Klassendefinition selbst gehören und nicht mit einer neuen Instanz erstellt werden. Statische Variablen gelten also für alle Instanzen einer Klassendefinition.
    MfG

    Comment


    • #3
      Hallo lulog1

      Merci für diese Super Erklärung ! Jetzt ist es klar

      Gruss
      Isa

      Comment

      Working...
      X