Attribute in Interfaces möglich?

Status
Nicht offen für weitere Antworten.

ernst

Top Contributor
Hallo allerseits,
In Interfaces werden Methodenköpfe definiert.
Dürfen in Interfaces auch Attribute (private) vorkommen?
Kann mir jemand dazu ein Beispiel geben?

mfg
Ernst
 

JPKI

Top Contributor
Nein, in Interfaces können nur statische Variablen (ich glaub "final" ist nicht unbedingt nötig) definiert werden.
Sicher können die auch prviat sein... Nur Atrribute halt nicht (also Objektvariablen).

Beispiel:
Code:
public interface IndaFaeis {

  public static final int KONSTANTE_1=12340;
  public static final int KONSTANTE_2=12341;

  //Methodenköpfe
  public void doSomething(Object o[]);
}
 

ernst

Top Contributor
JPKI hat gesagt.:
Nein, in Interfaces können nur statische Variablen (ich glaub "final" ist nicht unbedingt nötig) definiert werden.
Sicher können die auch prviat sein... Nur Atrribute halt nicht (also Objektvariablen).

Beispiel:
Code:
public interface IndaFaeis {

  public static final int KONSTANTE_1=12340;
  public static final int KONSTANTE_2=12341;

  //Methodenköpfe
  public void doSomething(Object o[]);
}

Was mir dazu gerade noch einfällt:
Muss das Interface in einer eigenen Datei erstellt werden?
(d.h. die Klasse die das Interface implementiert muss sich einer anderen Datei befinden)?

mfg
Ernst
 

JPKI

Top Contributor
Diesbezüglich gilt das selbe wie für Klassen:

- Ist das Interface public, so muss es in eine eigene Datei gepackt werden
- Du kannst aber auch Interfaces definieren, die eben nicht public sind und diese somit auch in eine deiner anderen Dateien mit hineinpacken
- Du kannst auch innere Interfaces definieren, genauso wie innere Klassen.
 

ernst

Top Contributor
Ok.
Kannst du mir den _Sinn_ sagen, warum eine public Klasse in einer eigenen Datei stehen muss?
(Irgendwas müssen die Java-Entwickler dabei gedacht bzw. beabsichtigt haben).

mfg
Ernst
 
G

Guest

Gast
ernst hat gesagt.:
Ok.
Kannst du mir den _Sinn_ sagen, warum eine public Klasse in einer eigenen Datei stehen muss?
(Irgendwas müssen die Java-Entwickler dabei gedacht bzw. beabsichtigt haben).

mfg
Ernst
Dies schafft bzw. erzwingt etwas mehr Ordnung im Code. Dateien kriegen die gleichen Namen wie die darin
enthaltenen public-Klassen. So kann man auch im Verzeichnis nach einer bestimmten Klasse suchen.
Gleiches gilt übrigens auch für Packages und die dazugehörige Verzeichnisstruktur.
(die ganze Reflection-API basiert darauf bzw. setzt dies voraus)
In C# kann man z.B. Namespaces (sowas wie Packages) unabhängig von der Verzeichnisstruktur vergeben
und Klassennamen sind auch nicht zwingend mit Klassennamen gekoppelt.
Folge: Wenn die Entwickler schlampig in der Namensgebung sind, findet man nur mit Mühe etwas. Es gibt
aber Zusatztools, mit denen man das Problem entschärfen kann (FxCop für .NET, Checkstyle für Java etc.)

Jetzt stell dir mal vor, du steigst bei irgendeiner Firma in ein laufendes Projekt ein und sollst dich schnell
zurecht finden. Es ist viel einfacher, wenn es gewisse Konventionen gibt, die überall gleich eingehalten
werden.
 
G

Guest

Gast
:autsch: Ich meinte

In C# kann man z.B. Namespaces (sowas wie Packages) unabhängig von der Verzeichnisstruktur vergeben
und Dateinamen sind auch nicht zwingend mit Klassennamen gekoppelt.
 

Wildcard

Top Contributor
1. und was ist daran gut?
2. packages haben primär nichts mit der Verzeichnisstruktur zu tun.
 
G

Guest

Gast
Murray hat gesagt.:
Anonymous hat gesagt.:
(die ganze Reflection-API basiert darauf bzw. setzt dies voraus)
Wie meinst du das?
Hier ein typisches Beispiel
Code:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
Man kann davon ausgehen, dass irgendeine Jar-Datei oder URI im Classpath diese Klasse enthält.
Ferner ist auch bekannt, dass die Klasse in einem Unterverzeichnis "sun/jdbc/odbc" zu finden
ist und auch tatsächlich den Namen "JdbcOdbcDriver" hat.
All dies ist nur deswegen möglich, da Packages und Klassennamen den oben genannten Konventionen
entsprechen. Wäre dies nicht der Fall, müsste jede Jar-Datei etc. eine Zusammenfassung der darin
enthaltenen Klassen enthalten (ein Mapping von Dateien und Klassen) oder es müsste jede einzelne
Datei untersucht werden, ob sie eine solche Klasse enthält.
 

HoaX

Top Contributor
Man kann davon ausgehen, dass irgendeine Jar-Datei oder URI im Classpath diese Klasse enthält.
Ferner ist auch bekannt, dass die Klasse in einem Unterverzeichnis "sun/jdbc/odbc" zu finden
ist und auch tatsächlich den Namen "JdbcOdbcDriver" hat.

du kannst davon ausgehen dass einer der classloader diese klasse laden kann. ob das jetzt ein jarclassloader ist, der seine classen in verzeichnissen ordnet oder ein selbstgeschriebener, der die klassen anhand vom packagenamen von der entsprechenden domain im internet läd ist nicht gesagt. der packagename ist nur eine innere ordnung, wie die klassen geladen werden und wie sie in der quelle stukturiert sind hat damit nichts zu tun.

All dies ist nur deswegen möglich, da Packages und Klassennamen den oben genannten Konventionen
entsprechen. Wäre dies nicht der Fall, müsste jede Jar-Datei etc. eine Zusammenfassung der darin
enthaltenen Klassen enthalten (ein Mapping von Dateien und Klassen) oder es müsste jede einzelne
Datei untersucht werden, ob sie eine solche Klasse enthält.

letzteres ist der fall, der JarClassLoader ist nur dazu da, klassen auf jardateien zu laden. für andere quellen gibts wiederum andere classloader.
 
G

Guest

Gast
HoaX hat gesagt.:
Man kann davon ausgehen, dass irgendeine Jar-Datei oder URI im Classpath diese Klasse enthält.
Ferner ist auch bekannt, dass die Klasse in einem Unterverzeichnis "sun/jdbc/odbc" zu finden
ist und auch tatsächlich den Namen "JdbcOdbcDriver" hat.

du kannst davon ausgehen dass einer der classloader diese klasse laden kann. ob das jetzt ein jarclassloader ist, der seine classen in verzeichnissen ordnet oder ein selbstgeschriebener, der die klassen anhand vom packagenamen von der entsprechenden domain im internet läd ist nicht gesagt. der packagename ist nur eine innere ordnung, wie die klassen geladen werden und wie sie in der quelle stukturiert sind hat damit nichts zu tun.

All dies ist nur deswegen möglich, da Packages und Klassennamen den oben genannten Konventionen
entsprechen. Wäre dies nicht der Fall, müsste jede Jar-Datei etc. eine Zusammenfassung der darin
enthaltenen Klassen enthalten (ein Mapping von Dateien und Klassen) oder es müsste jede einzelne
Datei untersucht werden, ob sie eine solche Klasse enthält.

letzteres ist der fall, der JarClassLoader ist nur dazu da, klassen auf jardateien zu laden. für andere quellen gibts wiederum andere classloader.
Es geht mir nur um den Sinn der ganzen Geschichte. Die Classloaderhierarchie und das eigentliche Laden von Klassen
liess ich hier weg. Der Standard ist aber nun mal, dass Packages in entsprechende Verzeichnisstrukturen aufgelöst werden.
z.B. (Der Pfad innerhalb der Jardatei entspricht dem Packagenamen und der Dateiname dem Klassennamen)

jar:file:/c:/programme/java/jdk1.6.0_01/jre/lib/rt.jar!/sun/jdbc/odbc/JdbcOdbcDriver.class
 

tfa

Top Contributor
JPKI hat gesagt.:
Nein, in Interfaces können nur statische Variablen (ich glaub "final" ist nicht unbedingt nötig) definiert werden.
Sicher können die auch prviat sein... Nur Atrribute halt nicht (also Objektvariablen).

"Variablen" in Interfaces sind immer public, static und final, niemals private.
Ob man die Modifier jetzt dazu schreibt oder nicht, bleibt einem selbst überlassen.

tfa
 

HoaX

Top Contributor
gast, nur weil es der am häufigsten verwendete classloader, jarclassloader, so macht ist das noch lange kein standard. und die reflectionapi hat damit auch überhauptnix zu tun.
 
G

Guest

Gast
HoaX hat gesagt.:
gast, nur weil es der am häufigsten verwendete classloader, jarclassloader, so macht ist das noch lange kein standard. und die reflectionapi hat damit auch überhauptnix zu tun.
Ich gebe auf, hat keinen Sinn. Ich habe hier manchmal den Eindruck, dass ich Deutsch schreibe und
der Forumsserver konvertiert es in Chinesisch. Keine Ahnung, was für ausgefallene, selbst geschriebene
Klassloader du verwendest, aber bei 99% aller Java-Anwendungen entspricht die Verzeichnisstruktur
der Packagestruktur (ob Jar-Datei, Verzeichnis, Jar-Datei über HTTP oder anderes Protokoll (URLClassloader
allgemein)) und das ist nun mal Standard bei Java. Was ist so schwer daran zu verstehen, was ich meine?
Code:
package a.b.c;

public class Hallo
{
   public static void main(String args[])
   {
      System.out.println("Hallo");
   }
}
Compiliere es ohne die Option -d und versuche es zu starten. Benenne die .class Datei um und versuche
es ebenfalls zu starten. OK, hier kommt jetzt dein ausgefallener Classloader zum Einsatz. :wink:
 
G

Guest

Gast
Wildcard hat gesagt.:
@Gast
Java Klassen aus Datenbanken zu laden ist so ungewöhnlich nicht.
Du kannst auch einen Classloader schreiben, der zunächst eine Email nach Japan schickt, die dort von
irgendeinem Server verarbeitet wird und dem Classloader via ICQ die Adresse eines Servers in Papua
Neu Guinea zuschickt, der ein Katalog von Klassen und der dazugehörigen Server führt, auf denen die
gesuchten Klassen gehostet sind. Jeder dieser Server speichert die Klassen in einem speziellen, Kontinent-
abhängigen Format, für den du einen Decoder von einem Server auf Grönland brauchst...
All diese Klassen wurden auch mit einem speziellen Compiler compiliert, der nicht darauf besteht, dass die
Sourcecodedateien den Klassennamen entsprechen...

:wink: Man kann das beliebig fortführen.
 

Yzebär

Bekanntes Mitglied
Anonymous hat gesagt.:
Du kannst auch einen Classloader schreiben, der zunächst eine Email nach Japan schickt, die dort von
irgendeinem Server verarbeitet wird und dem Classloader via ICQ die Adresse eines Servers in Papua
Neu Guinea zuschickt, der ein Katalog von Klassen und der dazugehörigen Server führt, auf denen die
gesuchten Klassen gehostet sind. Jeder dieser Server speichert die Klassen in einem speziellen, Kontinent-
abhängigen Format, für den du einen Decoder von einem Server auf Grönland brauchst...
All diese Klassen wurden auch mit einem speziellen Compiler compiliert, der nicht darauf besteht, dass die
Sourcecodedateien den Klassennamen entsprechen...
Deswegen ist Java sooooooooooo langsam... wegen des speziellen Classloaders... :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand XML desializing Attribute bringt nicht erwartetes Ergebnis Allgemeine Java-Themen 16
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
Junger_Basileus Attribute, Arrays, Schleifen Allgemeine Java-Themen 9
L xml node mit attribute auslesen Allgemeine Java-Themen 2
L Klassen Polymorphie:2 Attribute gleichen Namens in einem Objekt Allgemeine Java-Themen 6
D JSF Bean Attribute bei Seitenaufruf Allgemeine Java-Themen 6
C Attribute aus HTML Tags auslesen Allgemeine Java-Themen 6
B Mp3-Attribute auslesen & beschreiben Allgemeine Java-Themen 6
M PDF Drucker-Attribute hinterlegen Allgemeine Java-Themen 3
E Finale Attribute und Konstruktor Allgemeine Java-Themen 3
T [htmlparser.sourceforge.net] Attribute extrahieren Allgemeine Java-Themen 3
T Namenskonventionen für Objekt-Attribute Allgemeine Java-Themen 12
J Attribute eines Objekts in ByteArray Allgemeine Java-Themen 3
I Attribute in Textfile auslesen Allgemeine Java-Themen 13
G [JDK 6u2] - JAR Failed to load Main-Class manifest attribute Allgemeine Java-Themen 6
MQue Button Attribute setzen Allgemeine Java-Themen 14
F JSP XML ATTRIBUTE Allgemeine Java-Themen 2
H Nullpointer exception, Attribute in Label schreiben? Allgemeine Java-Themen 4
L Alle Attribute eines Source-Files auslesen Allgemeine Java-Themen 2
J Attribute beim Drucken ändern/ausstellen Allgemeine Java-Themen 8
A Dynamisch Attribute hinzufügen Allgemeine Java-Themen 3
B Zugriff auf Attribute/Methoden der init-Klasse Allgemeine Java-Themen 10
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
S Interfaces Allgemeine Java-Themen 10
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
J Generische Interfaces mehrfach einbinden Allgemeine Java-Themen 11
P Interfaces Allgemeine Java-Themen 1
K Wohin mit Interfaces? Allgemeine Java-Themen 2
J Interface Wofür Interfaces in Java verwenden? Allgemeine Java-Themen 3
F Namen des Interfaces ausgeben Allgemeine Java-Themen 1
P ClassCastException bei Verwendung eines Interfaces Allgemeine Java-Themen 7
F Sinn des Serializable Interfaces Allgemeine Java-Themen 8
G Interface Laden der Konfiguration über Interfaces sinnvoll? Allgemeine Java-Themen 28
X Generic muss zwei Klassen/Interfaces erfüllen Allgemeine Java-Themen 5
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
D Java Interfaces Allgemeine Java-Themen 3
sylo toString() Methode eines Interfaces überladen. Allgemeine Java-Themen 17
S statische Interfaces..? Allgemeine Java-Themen 6
M Frage zu Interfaces (Beispiel: Comparable) Allgemeine Java-Themen 13
I Interfaces und abstrakte Methoden Allgemeine Java-Themen 5
C Verständnis zur Strukturierung von Java-Projekten/Interfaces Allgemeine Java-Themen 2
M Methodenaufrufe sind über Interfaces langsamer. Allgemeine Java-Themen 43
J Verständnisfrage zu Casts auf Interfaces Allgemeine Java-Themen 5
J Statische Methoden in Interfaces? Allgemeine Java-Themen 10
J Immutable mit Interfaces möglich? Allgemeine Java-Themen 2
G verzweiflung pur mit java interfaces Allgemeine Java-Themen 5
M Bereits imlplementierte Interfaces nochmal bei "impleme Allgemeine Java-Themen 10
T Nochmal Frage zu Vererbung Interfaces etc. Allgemeine Java-Themen 10
F Implementierte Interfaces ermitteln Allgemeine Java-Themen 6
T JDBC: Unterschiede in Interfaces zwischen 2 Java-Versionen. Allgemeine Java-Themen 6
I Denkfehler bei Interfaces und Casts? Allgemeine Java-Themen 12
M 2 Java-Interfaces öffnen in Unix Allgemeine Java-Themen 4
B "Instantiieren" eines Objekts eines Interfaces Allgemeine Java-Themen 10
F Problem: mehrere Interfaces definieren equals() neu Allgemeine Java-Themen 24
F Probleme mit Interfaces Allgemeine Java-Themen 3
L Verschiedene Versionen eines Interfaces Allgemeine Java-Themen 12
S Methoden aus Interfaces mit unterschiedlichen Parametertypen Allgemeine Java-Themen 7
deetee Wie nennt man Interfaces wie Serializable? Allgemeine Java-Themen 8
B Elegantere Lösung bei der Implementierung eines Interfaces Allgemeine Java-Themen 2
N 2 Interfaces mit Methoden selber Signatur implementieren Allgemeine Java-Themen 5
D Implementierungen eines Interfaces finden Allgemeine Java-Themen 9
berserkerdq2 SceneBuilder GUI erstellt, nun muss ich noch ein Polygon erstellen, ist die Connection möglich? Allgemeine Java-Themen 3
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
R Java Stream: Ist es möglich, einen stream zusammenzufassen Allgemeine Java-Themen 6
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
D Java auf Webserver Website möglich Allgemeine Java-Themen 7
I PrinterJob - bestimmtes Druckerfach festlegen möglich? Allgemeine Java-Themen 2
D Eine Forschleife mit Threads abarbeiten um es zu schneller zu machen. Ist das möglich? Allgemeine Java-Themen 20
OnDemand Zeilenumbruch ignorieren möglich? Allgemeine Java-Themen 1
0 Eingabe nicht möglich... Allgemeine Java-Themen 12
FunnyO KeyEvent.VK_ + int i, ausgeben mit Bot möglich? Allgemeine Java-Themen 2
C Programmierung von Fotoeffekten mit Java möglich? Allgemeine Java-Themen 3
B ist es möglich in java keyboardtöne per MIDI kabel aufzunhemen ? Allgemeine Java-Themen 5
F Mehrfachverebung in Java (möglich)? Allgemeine Java-Themen 4
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
E Ermitteln einer eindeutigen ID eines Objekts möglich? Allgemeine Java-Themen 17
R Löschen von Files nicht möglich Allgemeine Java-Themen 11
F Frage zu Regex möglich Allgemeine Java-Themen 4
P Code in Methode auslagern möglich? Allgemeine Java-Themen 9
P Datentypen float mit komma statt punkt möglich? Allgemeine Java-Themen 6
DStrohma Swing Nicht möglich für ein JPanel den Fokus zu bekommen? Allgemeine Java-Themen 9
H JTable per iText in PDF: Größenanpassung möglich? Allgemeine Java-Themen 2
GianaSisters Erste Schritte Debuggen im CMD möglich ? Allgemeine Java-Themen 19
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
P RegEx mit HTML Parser für Java möglich? Allgemeine Java-Themen 10
F Screenshot von gewissen Anwendungen nicht möglich Allgemeine Java-Themen 5
K Serialisierung in Properties-Datei möglich? Allgemeine Java-Themen 3
Haave Audio Device Unavailable: Kein gleichzeitiger Zugriff auf Soundsystem möglich Allgemeine Java-Themen 7
B Arraylist.contains(Klasse) möglich? Allgemeine Java-Themen 19
J Objekt selbst ertellen möglich? Allgemeine Java-Themen 6
J DLL ansteuern möglich? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben