-
10.07.08 21:42 #31
- Registriert seit
- May 2007
- Ort
- Riedstadt (Hessen)
- Beiträge
- 354
Was ist die Ausgabe des Beispielcodes unter:
http://www.tutorials.de/forum/1630760-post5.html
und warum?
Achtung Spoiler:
Einträge in einem Set müssen immutable sein, sonst können Duplikate entstehen. Offensichtlich ist das bei der konkreten Map.Entry Klasse nicht der Fall. Die IdentityHashMap scheint immer das selbe interne Objekt zu recyceln. So zeigen alle Referenzen auf das selbe Objekt. Würde man die HashMap in einer Schleife sequenziell befüllen, müsste man das sehen können. Warum die Add-Methode die Duplikate nicht erkennt ist mir jedoch noch ein Rätsel. Ich bleibe dran.
Ich weiss, dass die Erklärung noch etwas wage ist. Bin ich auf dem richtigen Weg?
I didn't write this; a very complex macro did.
-
@limago: Ja bist du.
-
10.07.08 22:02 #33
- Registriert seit
- May 2007
- Ort
- Riedstadt (Hessen)
- Beiträge
- 354
Achtung Spoiler:
Ich glaube ich habe habe es. Die Add-Methode ermittelt den HashCode des zu speichernden Objektes. Dieser wird als Key für die Referenz benutzt. Der nächste Aufruf von Add ermittelt einen anderen Hashcode aus den Objektdaten, also wird die Referenz mit dem anderen Hashcode in das Set eingetragen. Beide Refenzen zeigen nun aber auf das one and only Objekt. Das ist es oder?I didn't write this; a very complex macro did.
-
10.07.08 22:21 #34
- Registriert seit
- May 2007
- Ort
- Riedstadt (Hessen)
- Beiträge
- 354
@tom: Nicht nur den Code lesen, sondern auch was drunter steht. Dann wird die Frage klarer
I didn't write this; a very complex macro did.
-
12.07.08 16:52 #35Achtung Spoiler:
Ach sooooooo, danke. Jetzt verstehe ich auch warum die Main static ist: Weil keine Instanz eines Überobjekt's intialisiert ist was sie aufrufen könnte kann sie nur aufgerufen werden wenn sie unabhängig eines anderen Objekts ist.
Die Frage kommt aus der Zeit als ich mich mit OOP auseinandergesetzt habe. Damals hat die Main noch alles erledigt (anderst als jetzt wo nur ein "new" drinnensteht), und ich habe der Klasse "Soldat" ein Static verpasst weil es in der Paint dadurch verlangt wurde, und ein Bekannter hat "wenn die variablen static sind, dann sind se für alle soldaten gleich
" als ich ihm nach einen Fehler gefragt habe geschrieben.
Deshalb bin ich davon ausgegangen dass ein return() auch immer den selben Wert zurückliefert.
-
12.07.08 19:28 #36
- Registriert seit
- May 2007
- Ort
- Riedstadt (Hessen)
- Beiträge
- 354
Ich habe eine Abstrakte Klasse, von dieser erben 2 Kindklassen. Beide haben identische codierte Methoden. Könnte diese nicht besser in der in der abstrakten Klasse implementiert werden. kann es Gründe für folgende Lösung geben?
Code java:1 2 3 4 5 6 7
package de.tutorials; public abstract class AbstractParent { public abstract void doSomeThingWithWorker(Worker worker); }
Code java:1 2 3 4 5 6 7 8 9 10 11
package de.tutorials; public class ConcreteChild1 extends AbstractParent { @Override public void doSomeThingWithWorker(Worker worker) { worker.work(this); } }
Code java:1 2 3 4 5 6 7 8 9 10 11
package de.tutorials; public class ConcreteChild2 extends AbstractParent { @Override public void doSomeThingWithWorker(Worker worker) { worker.work(this); } }
Sieht doch ziemlich redundant aus. Oder ist es das nicht?I didn't write this; a very complex macro did.
-
12.07.08 22:13 #37Achtung Spoiler:
Da "this" zur Funktion "work" mitgeliefert wird, kann die Klasse "Worker" auf beide erbenden Klassen individuell "eingehen", falls du das gemeint hast. Denke zwar eher nicht weil das wohl zu einfach ging, aber will mal mein Glück versuchen. =)
-
13.07.08 09:24 #38
- Registriert seit
- May 2007
- Ort
- Riedstadt (Hessen)
- Beiträge
- 354
@kai008
Du hast im Prinzip recht. Aber warum kann ich die Methode nicht in der abstrakten Klasse implementieren? Diese ist selbst ja nicht instanziierbar. Also würde der this-Zeiger der abstrakten Klasse ja sowieso immer auf eine der Childinstanz zeigen.
Schlimmstenfalls passiert dies :
Code java:1 2 3 4 5 6 7 8 9 10 11 12
package de.tutorials; public class Main { public static void main(String[] args) { AbstractParent referenz = new ConcreteChild1(); referenz.doSomeThingWithWorker(new Worker()); } }
Könnte ich da nicht einfacher und besser auf die "doSomeThingWithWorker"-Methode verzichten und gleich folgenden Aufruf ausführen?
Code java:1 2 3 4 5 6 7 8 9 10 11 12
package de.tutorials; public class Main { public static void main(String[] args) { AbstractParent referenz = new ConcreteChild1(); new Worker().work(referenz); } }
Geändert von limago (13.07.08 um 09:33 Uhr)
I didn't write this; a very complex macro did.
-
23.07.08 10:03 #39
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
was ist die Ausgabe hiervon und warum:
Code java:
Gruß TomJava 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
-
25.07.08 14:17 #40
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
die Ausgabe:
Code java:1 2 3 4 5
true Exception in thread "main" java.lang.NullPointerException at java.lang.String.<init>(Unknown Source) at java.lang.String.valueOf(Unknown Source) at de.tutorials.NullStringEqualsNull.main(NullStringEqualsNull.java:17)
Erklärung:
Beim ersten Aufruf wird die Überladung mit String(Object value) Signatur der valueOf Methode aufgerufen.
Code java:
Beim zweiten Aufruf wird jedoch auf die String (char[] data) Variante gegangen. Da hier davon ausgegegan wird, dass das char[] nicht null ist, kommt hier im weiteren Verlauf eine NullPointerException zu stande.
Tja, nur warum wird hier beim zweiten Aufruf die String (char[] data)? Weil diese nach Java Language Spec die am besten passende Varainte für die Eingabe ist. Warum? - Das Wird durch eine ganze Menge von ziemlich komplizierten Regeln in der JLS beschrieben, wie ihr hier nachlesen könnt:
15.12 Method Invocation Expressions
http://java.sun.com/docs/books/jls/t...ns.html#292575
Gruß TomJava 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
-
25.07.08 14:28 #41
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
hier mal noch ein neues Rätsel:
Eine Zahl soll in ein Zahlenwort umgewandelt werden. Beispiel 2147483647 in "zwei Milliarden hundertsiebenundvierzig Millionen vierhundertdreiundachtzigtausendsechshundertsiebenundvierzig".
Wie macht man das möglichst schnell, einfach und elegant?
(Man darf auch zusatzlibs verwenden, aus dem Eclipse Project, Tomcat, Spring, Hibernate, etc.)
Keiner Hint als zusäzliche Anforderung: Man soll die Zahl auch auf "englisch" und "französisch" ausgeben können also bei 2147483647 :
englisch: two billion, one hundred and forty-seven million, four hundred and eighty-three thousand, six hundred and forty-seven
französisch: deux milliard cent quarante-sept million quatre cents quatre-vingt-trois mille six cents quarante-sept
Gruß TomJava 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
-
25.07.08 19:51 #42
Ich habs mal versucht, weiß aber nicht ob es gut funktioniert, oder noch mehr ob es sauber ist, habe es schnell runtergeschrieben, und nur ein mal am Ende ausprobiert.
Ach ja, habe es fürs erste nur bis Tausend gemacht, sollte aber einfach so erweiterbar sein.Geändert von Kai008 (25.07.08 um 19:54 Uhr)
-
27.07.08 21:59 #43
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
danke Kai008 das du dich daran versucht hast
Dein Ansatz funktioniert natürlich auch, jedoch muss man hier noch relativ viel "selber machen". Wie wärs denn damit?
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
/** * */ package de.tutorials; import java.util.Locale; import com.ibm.icu.text.RuleBasedNumberFormat; /** * @author Tom * */ public class NumberSpelling { /** * @param args */ public static void main(String[] args) { int number = Integer.MAX_VALUE; System.out.println(number); System.out.println(new RuleBasedNumberFormat(Locale.GERMANY, RuleBasedNumberFormat.SPELLOUT).format(number)); System.out.println(new RuleBasedNumberFormat(Locale.US, RuleBasedNumberFormat.SPELLOUT).format(number)); System.out.println(new RuleBasedNumberFormat(Locale.FRANCE, RuleBasedNumberFormat.SPELLOUT).format(number)); } }
Ausgabe:
Code :1 2 3 4
2147483647 zwei Milliarden hundertsiebenundvierzig Millionen vierhundertdreiundachtzigtausendsechshundertsiebenundvierzig two billion, one hundred and forty-seven million, four hundred and eighty-three thousand, six hundred and forty-seven deux milliard cent quarante-sept million quatre cents quatre-vingt-trois mille six cents quarante-sept
Kommt mir bekannt vor? Das kann sein, denn:
http://www.tutorials.de/forum/java/2...ahlenwort.html
Gruß TomJava 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
-
Letztendlich macht die RuleBasedNumberFormat-Version aber auch nicht viel anders als Kai008s Version, nur dass Kai008 die Funktionen selber geschrieben hat
Hier kommt der Genuss!
-
*Thread ausgrab*

Was wird ausgegeben wenn man folgendes Programm ausführt? Es dürfte zwar relativ klar sein, aber die Idee kam mir gerade heute und wunderte mich ob auch wirklich das "Gedachte" auf der Konsole ausgegeben wird.
Achja, das Warum könnt ihr auch noch angeben.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Foo implements ActionListener { public Foo() { new Foobar().a(this); } public static void main(String[] args) { new Foo(); } public void actionPerformed(ActionEvent e) {} } class Foobar { public void a(ActionListener a) { System.out.println("actionlistener"); } public void a(Foo foo) { System.out.println("foo"); } }
Geändert von java123 (27.08.09 um 22:57 Uhr)
Ähnliche Themen
-
Rätsel
Von Layna im Forum SmalltalkAntworten: 5Letzter Beitrag: 18.11.04, 19:11 -
Rätsel
Von Olli-Web im Forum Fun-ForumAntworten: 6Letzter Beitrag: 01.05.04, 14:27 -
Rätsel
Von reBourne im Forum SmalltalkAntworten: 6Letzter Beitrag: 30.09.03, 13:23 -
3 Rätsel
Von mslap im Forum Fun-ForumAntworten: 5Letzter Beitrag: 07.08.03, 11:35 -
Ist mir ein Rätsel
Von Eric25 im Forum HTML-EditorenAntworten: 3Letzter Beitrag: 25.04.02, 09:03



5Danke

Zitieren



Login





