tutorials.de Buch-Aktion 05/2012
Seite 1 von 6 1234 ... LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
85
ZUGRIFFE
23437
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    bei unseren Kollegen vom java-forum.org gibts nen interessanten Thread wo die User immer wieder neue Java Rätsel posten und lösen.

    Hier mal eine Beispiel-Aufgabe:
    http://www.java-forum.org/de/viewtop...=asc&start=780
    ...
    Aufgabe: Die Methode "get" ist so umzuschreiben, dass: In den geschweiften Klammern gibt es nur noch das return-Statement, mit einem mehr oder weniger komplizierten Ausdruck hinter dem "return". "get" setzt weiterhin "a" auf null und gibt den alten Wert von "a" zurück (anders gesagt: es gibt noch ein Semikolon ';' in "get" und "get" macht dasselbe wie vor der Änderung).
    ...
    Als Lösungsvorschlag kam dann:
    Code java:
    1
    2
    3
    4
    
    public Object get( Object... schummel ){
    return ((schummel = new Object[]{ a }) != null ) ?
    (((a = null) == null ) ? schummel[0] : null) : null;
    }

    Mein Vorschlag wäre hier:
    Code java:
    1
    2
    3
    4
    5
    
            public Object get2() {
    return (System.getProperties().put("XXX", a) == (a = null)) ? System
                        .getProperty("XXX")
                        : null;
            }

    Jemand ein neues Rätsel parat?

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Okay, was ist die Ausgabe von folgendem Codestück wenn man die main ausführt? Bitte nicht einfach ausführen

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
    package de.tutorials;
     
    public class Instantiation {
        
        private interface InnerClass {}
     
        private static final InnerClass[] inner = { new Inner0() };
     
        private static final Singleton singleton1 = Singleton.getInstance();
     
        private static final class Inner0 implements InnerClass {
            public Inner0() {
                System.out.println(singleton1.getName());
            }
        }
     
        private static final class Singleton {
            private static final Singleton singleton = new Singleton();
     
            private Singleton() {
                System.out.println("Create SingletonInstance");
            }
     
            public String getName() {
                return "Name";
            }
     
            public static final Singleton getInstance() {
                return singleton;
            }
        }
        
        public static void main(String[] args) {
            System.out.println(inner.length);
        }
    }


    Lösungen bitte in [spoiler]...[/spoiler] einschließen. Dann können mehr mitraten
    raistlin77 bedankt sich. 

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Achtung Spoiler:

    Tja bei static Membern kommt es halt auf die Initialisierungsreihenfolge an
    El Capitan bedankt sich. 
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  4. #4
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Achtung Spoiler:
    Es wird eine Exception geworfen.


    Natürlich kann man noch weiter Antworten für zejas Rätsel posten.
    Ich hätte aber auch mal eins.

    Wie lautet die Ausgabe und warum?

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    public class AusgabeParent
    {
     
      public AusgabeParent()
      {
        initialize();
      }
      
      protected void initialize(){
        System.out.println("Initialize");
      }
    }

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
     
    public class AusgabeChild extends AusgabeParent
    {
     
      private String ausgabeString = "Wird man dieses lesen?";
     
      public AusgabeChild()
      {
        super();
        System.out.println(ausgabeString);
      }
      
      protected void initialize()
      {
        super.initialize();
        ausgabeString = "Oder wird man doch dieses lesen?";
      }
      
      public static void main(String[] args)
      {
        new AusgabeChild();
      }
    }

    Bei mir gilt natürlich das gleiche wie bei zeja. Nicht die main-Methode ausführen und auch mit Spoiler antworten.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  5. #5
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    was wird hier ausgegeben?
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    /**
     * 
     */
    package de.tutorials;
     
    import java.util.HashSet;
    import java.util.IdentityHashMap;
    import java.util.Map;
     
    /**
     * @author Tom
     * 
     */
    public class IdentiyHashMapExample {
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            Map<String, Integer> m = new IdentityHashMap<String, Integer>();
            m.put("a", 1);
            m.put("b", 2);
            m.put("c", 3);
            m.put("a", 4);
     
            System.out
                    .println(new HashSet<Map.Entry<String, Integer>>(m.entrySet()));
        }
     
    }

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  6. #6
    Clash Clash ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Ort
    Stuttgart
    Beiträge
    101
    Zu Sascha's Rätsel
    Achtung Spoiler:

    es erfolgt die Ausgabe von "Wird man dies Lesen" da mit dem super() aufruf im Konstruktor lediglich der Konstruktor der der Vaterklasse aufgerufen wird der wiederum seine! initialize() Methode aufruft. Das überschreiben von initialize() in der Kindklasse ist somit keinen Effekt (zumindest in diesem Beispiel )
    Fr34k9 bedankt sich. 

  7. #7
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Das ist so nicht korrekt. Ein Prinzip der objectorientierten Programmierung ist ja Polimorphie und dieses garantiert ja, dass die überschriebene initialize-Methode aufgerufen wird. Kannst du gerne mit einer weiteren Ausgabe prüfen.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  8. #8
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Achtung Spoiler:

    Hmm? Ich hätte auch gedacht, dass die Methode von AusgabeChild ausgeführt wird und der Ausgabe-String überschrieben wird. Aber Java sagt mir was anderes, warum weiß ich allerdings nicht...


    Nebenbei: Wäre es nicht sinnvoller, der Übersicht wegen die Rätsel nacheinander hier einzustellen?

    Grüße, D.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  9. #9
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    @Dario
    Es war ja nicht ganz Sinn der Sache, das Programm auszuführen und die Ausgabe zu posten.

    MFG

    Sascha

    EDIT: Wenn bis Morgen keiner die richtige Lösung gepostet hat, werde ich es auflösen.
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  10. #10
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Ich weiß, ich dachte nur, es wäre ja sowieso schon gelöst... hab's weg editiert.

    Ich wollte ja eigentlich auch gestern schon meine Gedanken dazu posten - aber als ichs zur Kontrolle mal ausgeführt hab, hat es mich stutzig gemacht, weil was anderes raus kam, als ich erwartet hatte und hätte begründen können. Deswegen hab ichs sein lassen.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  11. #11
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Wenn es so leicht wäre, wäre es ja kein Rätsel.

    Ich hatte vor einiger Zeit mal so ein Konstrukt programmiert und war dann ebenso verblüfft, als ich nen Fehler hatte.
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  12. #12
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Naja... Fehler? Würde mich aber mal interessieren, woran's liegt.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  13. #13
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Naja, ich hatte nen Fehler, weil ich halt ne Variable mit null initialisiert hatte. Also kam da dann eine NullPointerException. Das passiert hier ja nicht.

    Morgen wirst du es spätestens Erfahren. Es sei Tom sagt vielleicht heute noch was oder jemand anderes.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  14. #14
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Gut, wenn ich eh noch Zeit hab, dann rate ich schnell nochmal.

    Achtung Spoiler:

    Java führt die Initialisierung von ausgabeString genau genommen erst im Konstruktor von AusgabeChild aus. Evtl. erst nach dem Aufruf von super()?


    Klingt für mich zwar irgendwie weit hergeholt, aber ein anderer Grund fällt mir nicht ein.

    Grüße, D.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  15. #15
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    Hmmm Wo ist da das Rätsel? Die Ausgabe ist "Initialize" mit einem nachfolgendem "wird man dieses lesen?".
    Durch das "super();" wird doch nur der Konstruktor der Vaterklasse aufgerufen, in dem die Ausgabe von "Initialize" erfolgt. Und dann eben das Syso aus dem Konstruktor von AusgabeChild.
    Oder hab ich da was nicht mitbekommen
    Geändert von hammet (17.06.08 um 14:44 Uhr)
     
    Handlanger des Dr. Ex1tus

    Ich kenne Matzes dunkles Geheimnis ! oO

    o
    L_/
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.

    Hallo Nuray!

Ähnliche Themen

  1. Rätsel
    Von Layna im Forum Smalltalk
    Antworten: 5
    Letzter Beitrag: 18.11.04, 19:11
  2. Rätsel
    Von Olli-Web im Forum Fun-Forum
    Antworten: 6
    Letzter Beitrag: 01.05.04, 14:27
  3. Rätsel
    Von reBourne im Forum Smalltalk
    Antworten: 6
    Letzter Beitrag: 30.09.03, 13:23
  4. 3 Rätsel
    Von mslap im Forum Fun-Forum
    Antworten: 5
    Letzter Beitrag: 07.08.03, 11:35
  5. Ist mir ein Rätsel
    Von Eric25 im Forum HTML-Editoren
    Antworten: 3
    Letzter Beitrag: 25.04.02, 09:03