array erzeugen / inner class
-
huhu ihrs
hab grad mal 2 Frange:- Gibt es hierbei irgend einen Unterschied, oder ist das für den Compiler identisch ?
{ int[] ar1 = {1,2,3}; int[] ar2 = new int[]{1,2,3}; }
- Wieso ist der Konstruktor sichtbar ?
public static void main(String [] args) { class A { private A() { } } A a = new A(); // Kein Error }
ups ich meinte nat. local-class im Titel xD
danke euch schonmal
-
1.) AFAIK kein Unterschied, Variante 1 funktioniert aber nur mit Literalen
2.) Private in Inner Classes bezieht sich immer auf die Enclosing Class.
-
byto schrieb:
2.) Private in Inner Classes bezieht sich immer auf die Enclosing Class.
joa schon, aber das hier ist ja ne local-class und local-classes sind ja sowieso nur in dem Block, in dem sie definiert werden, sichtbar...
Wieso kann ich also auf private-elemente zugreifen?
Oder besser gefragt, wenn ich sowieso auf alles in einer local-class zugreifen darf, wieso sind dann Zugriffsmodifizierer-Angaben überhaupt erlaubt ?MFG dweb
-
Es is eine methodenlokale innere Klasse.
In der Methode wird zuerst die Klasse definiert. Dann kann man von dieser Klasse eine Instanz bilden.
Die Klasse wird mit dem Aufruf der Methode deklariert, definiert und instanziert
-
Local Classes
A local class is declared inside a method, a constructor, a static initializer, or an instance initializer. A local class cannot have a static modifier. A local class is analogous to a local variable in some ways. You cannot use public, protected, private, or static modifiers in a local class analogous to a local variable.
class Outer { // Top-level class void method() { // Method declaration class Inner {// Local class } } }
-
--->You cannot use public, protected, private, or static modifiers in a local class analogous to a local variable.<---
joa das macht Sinn, aber Eclipse erlaubt es mal trotzdem naja^^
-
Dweb schrieb:
--->You cannot use public, protected, private, or static modifiers in a local class analogous to a local variable.<---
joa das macht Sinn, aber Eclipse erlaubt es mal trotzdem naja^^
Blame den Java Compiler, der Compilert es trotzdem, weil es keine syntaktische Einschränkung ist, sondern eine Semantische.