Multiple Choice Fragen

Du verwechselst da etwas. Denn in der Aufgabenstellung ist von „Typebound“ die Rede. Typebound wird genutzt, um einen generischen Typ-Parameter (oder generischen Parameter, ich glaube die Dinger haben keinen Eigennamen) näher zu spezifizieren (an einen Typen zu binden). Sowas bezieht sich auf einen Parameter und enthält ein extends in der Parameter-Definition ( A extends AbstractA ).

Dein Beispiel ist eine Antwort auf die Aussage: „Eine Klasse kann mit mehreren Typ-Parameter definiert werden“. Und die ist (wie du selbst beschrieben hast) richtig.

Dann habe ich das grad verwechselt, danke. Und deine Antwort ist dann, wie gesagt, korrekt.

Also mein HiWi hat mir eben seine Antworten mitgeteilt, aber die stimmen Teilweise nicht so ganz mit euren Antworten überein. Was haltet ihr von seinen Antworten + Begründung??

  1. Werte einer Emun-Klasse können nicht verändert werden.

Antwort: Falsch

Grund: Instanzvariablen von Enum Objekten verhalten sich wie die von anderen Objekten.

  1. Ein Konstruktor darf nicht den Modifikator private besitzen.

Antwort: Wahr

Grund: sonst wären Enums nicht möglich usw.

  1. Von anonymen Klassen lassen sich keine Objekte erzeugen.

Antwort: Wahr

Grund: es lässt sich nur ein Objekt erzeugen und nicht mehrere. Selbst wenn wir eine Methode schreiben, in der ein Objekt durch eine anonyme Klasse erzeugt wird, ist es für den Compiler und dann auch für die JVM ein anderer Objekttyp.

(Ja die Frage ist richtig blöd)

  1. Es können gleichzeitig mehrere Klassen als Typebound auftreten.

Antwort: Wahr

Grund:
The preceding example illustrates the use of a type parameter with a single bound, but a type parameter can have multiple bounds:
<T extends B1 & B2 & B3>

A type variable with multiple bounds is a subtype of all the types listed in the bound. If one of the bounds is a class, it must be specified first. For example:
Class A { /* … / }
interface B { /
/ }
interface C { /
… */ }

class D <T extends A & B & C> { /* … */ }

If bound A is not specified first, you get a compile-time error:
class D <T extends B & A & C> { /* … */ } // compile-time error

[QUOTE=NikeAir22]11. Werte einer Emun-Klasse können nicht verändert werden.
Antwort: Falsch
Grund: Instanzvariablen von Enum Objekten verhalten sich wie die von anderen Objekten.[/quote]
ja das ist richtig. Hat ein enum einen Instanzvariable und die ist zb per setter aenderbar, dann ja

[QUOTE=NikeAir22;26637]
12. Ein Konstruktor darf nicht den Modifikator private besitzen.
Antwort: Wahr
Grund: sonst wären Enums nicht möglich usw.[/QUOTE]
sicher dass die Frage so lautet ? denn die Erklaerung wiederlegt eigentlich die Frage. Eine Klasse darf natuerlich einen privaten Konstruktor haben. Enum ist ein bsp

11: Kommt darauf an, wie man die Frage auffast. Wenn mit “Werte” die Enum-Konstanten gemeint sind, muss die Antwort wahr lauten, wenn aber darauf abgezielt wird, ob die Enum Instanzen immutable sind, müsste sie falsch lauten. Wahrscheinlich ist letzteres gemeint.

12: Ich glaub der HiWi hat die Frage nicht genau gelesen (er hat wohl das nicht überlesen). Die Antwort ist auf jeden Fall “falsch”.

13: Auch da liegt er falsch, auch wenn ich die Begründung nicht nachvollziehen kann. Diese Behauptung ist auch flasch. Richtige Begründung: Von anonymen Klassen lassen sich beliebig viele Instanzen erzeugen, dies geht nur nicht über new A() an jeder beliebigen Stelle im Code, sondern nur in einer einzigen Zeile (dort eben, wo die Klasse “erstellt” wird). Wird diese Zeile in einer Schleife aufgerufen, oder befindet sie sich in einer Methode, die mehrfach aufgerufen wird, können beliebig viele Objekte einer anonymen Klasse erstellt werden.

18: Die Diskussion hatten wir schon in diesem Thread. Wörtlich genommen, ziehlt die Frage nur auf Klassen ab, ist somit falsch. Nur Interfaces dürfen mehrfach vorkommen, nach denen wird aber nicht gefragt. Auch hier lag der HiWi daneben.

[QUOTE=Kevin94]11: Kommt darauf an, wie man die Frage auffast. Wenn mit “Werte” die Enum-Konstanten gemeint sind, muss die Antwort wahr lauten, wenn aber darauf abgezielt wird, ob die Enum Instanzen immutable sind, müsste sie falsch lauten. Wahrscheinlich ist letzteres gemeint.

12: Ich glaub der HiWi hat die Frage nicht genau gelesen (er hat wohl das nicht überlesen). Die Antwort ist auf jeden Fall “falsch”.

13: Auch da liegt er falsch, auch wenn ich die Begründung nicht nachvollziehen kann. Diese Behauptung ist auch flasch. Richtige Begründung: Von anonymen Klassen lassen sich beliebig viele Instanzen erzeugen, dies geht nur nicht über new A() an jeder beliebigen Stelle im Code, sondern nur in einer einzigen Zeile (dort eben, wo die Klasse “erstellt” wird). Wird diese Zeile in einer Schleife aufgerufen, oder befindet sie sich in einer Methode, die mehrfach aufgerufen wird, können beliebig viele Objekte einer anonymen Klasse erstellt werden.

18: Die Diskussion hatten wir schon in diesem Thread. Wörtlich genommen, ziehlt die Frage nur auf Klassen ab, ist somit falsch. Nur Interfaces dürfen mehrfach vorkommen, nach denen wird aber nicht gefragt. Auch hier lag der HiWi daneben.[/QUOTE]

+1

Begründung durch Grammatik - auch nicht schlecht. Wobei Klassen jedoch ebenfalls im Plural steht, und bei mehreren (anonymen) Klassen kann man auch mehrere Objekte erzeugen. Wenn man unbedingt möchte kann man sich darüber hinaus noch mit myObject.clone() oder myObject.getClass().newInstance() weitere Instanzen einer anonymen Klasse besorgen. Wobei ich aber hoffe das solche Praktiken nicht an Hochschulen gelehrt werden…

Ganz allgemein - wenn ich Fragen mißverständlich formuliert finde, dann nehme ich mir ggf. auch bei Multiple-Choice-Tests die Freiheit erläuternde Kommentare zu meinen Antworten auf die Rückseite zu schreiben.

Die Frage ist schon allein deswegen beantwortet, weil anonyme Klassen in der Regel zur anonymen Objekterzeugung genutzt werden, z.B. für Listener und damit habe ich schon min. 1 Instanz. Somit habe ich eine Instanz von einer anonymen Klasse erzeugt, ganz einfach, und damit ist die Frage natürlich mit „falsch“ zu beantworten. Weitere Instanzen können anschließend auch nach belieben erzeugt werden, sofern ich irgendwie eine Referenz zu der Klasse halte, etwa als Class-Objekt. Das geht dann zwar in Richtung Reflection und wenn man darauf hinaus will, dass man keine weiteren Instanzen via new-Operator erzeugen kann … Naja, min. eine Instanz ist mit new erzeugt worden, also? … :smiley: Die Antwortet lautet „falsch“, es können Objekte von anonymen Klassen erzeugt werden.

[QUOTE=iKnwWhtUDidLast]

01 falsch
02 richtig
03 richtig
04 richtig
05 richtig
06 falsch
07 falsch
08 richtig
09 falsch
10 richtig
11 richtig
12 falsch
13 falsch
14 falsch
15 siehe 08, richtig
16 richtig
17 richtig

8x falsch und 8x/9x richtig

Wrapper brauchen immer ne neue Instanz
wait & notify bei Nebenläufigkeit
in einer .java-Datei können mehrere Klassen und so sein
ein Klasse → ein Paket
Stichwort: Serialisierung & Enum & Singleton

Jetzt muss ich mal schauen, was die anderen so haben.[/QUOTE]

  • Wrapper brauchen immer 'ne neue Instanz
  • wait & notify bei Nebenläufigkeit
  • in einer .java-Datei können mehrere Klassen usw. sein, daraus können (nach dem Übersetzen) mehrere .class-Dateien werden
  • ein Klasse → genau ein Paket oder kein Paket
  • Stichworte: Nebenläufigkeit, Serialisierung, Enum und Singleton

Mindestens besser gleich eine 2. Weitere Empfehlung für Literatur: Java i a e Insel, Java von Kopf bis Fuß, Effective Java (2nd Edition): Joshua Bloch, z. B.

Okay Leute. Vielen, vielen Dank an alle. Habe das meinem HiWi nun mitgeteilt und er hat sich das ganze auch nochmal angeschaut. Er hat sich vertan. Hätte ich mich nur auf ihn verlassen, wäre ich wohl verloren. Ein tolles Forum :wink: