+++ Quiz +++ Wo wird this deklariert (4x) und wo wird this verwendet (12x)?
 Klicken Sie unmittelbar hinter die Stellen, an denen Sie this vermuten.  Auflösung 

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// Datum.java
import java.util.Calendar;
/** * Datum ist ein Bauplan für Datumswerte. * Beispielprogramm zur Programmiertechnik 1, Teil 4. * @author H.Drachenfels * @version 19.12.2016 */
public final class Datum {
/** Instanzvariable speichert den Tag im Monat. */
public final int tag;
/** Instanzvariable speichert den Monat im Jahr. */
public final int monat;
/** Instanzvariable speichert das Jahr. */
public final int jahr;
private Datum(/* final Datum this, */int t, int m, int j) {
this.tag = t;
this.monat = m;
this.jahr = j;
}
/** * Fabrikmethode, die ein value object mit dem angegebenen Datum liefert. * @param tag ist der Tag im Monat * @param monat ist der Monat im Jahr * @param jahr ist das Jahr * @return Referenz auf das value object */
public static Datum valueOf(int tag, int monat, int jahr) {
// Datum pruefen (stark vereinfacht)
if (tag < 1 || tag > 31 || monat < 1 || monat > 12) {
throw new IllegalArgumentException("ungueltiges Datum");
}
// value object erzeugen
return new Datum(tag, monat, jahr);
}
/** * Fabrikmethode, die ein value object mit dem aktuellen Datum liefert. * @return Referenz auf das value object */
public static Datum heute() {
// Systemkalender ablesen
Calendar c = Calendar.getInstance();
// value object erzeugen
return new Datum(c.get(Calendar.DAY_OF_MONTH),
c.get(Calendar.MONTH) + 1,
c.get(Calendar.YEAR));
}
@Override
public String toString(/* final Datum this */) {
return String.format("%04d-%02d-%02d", this.jahr, this.monat, this.tag);
}
@Override
public boolean equals(/* final Datum this, */Object o) {
if (o instanceof Datum) {
Datum that = (Datum) o;
return this.tag == that.tag
&& this.monat == that.monat
&& this.jahr == that.jahr;
}
return false;
}
@Override
public int hashCode(/* final Datum this */) {
return (this.jahr << 9) + (this.monat << 5) + this.tag;
}
}