Portal > Foren > Java > Allgemeine Java-Programmierung > Typ Float in Klasse mit Typ Line2D.Double nicht direkt verwendbar
Antwort
 
Themen-Optionen
Alt 06.03.2006, 11:25 Nach oben    #1
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.471
Standard Typ Float in Klasse mit Typ Line2D.Double nicht direkt verwendbar

Oh Mann, ich habe heute aber viele kleine Problemchen *g* .

Aaaaalso.
Ich habe eine Klasse "BorderBarricade extends Line2D.Double". Jut. Nichts Besonderes. Nun habe ich eine Membervariable
Code:
private Float acceleration = new Float(1.0f);
So. Und jetzt kommt es ... in Eclipse wird das "new Float(1.0f)" markiert und ich erhalte die Meldung im Tooltip
Code:
The Constructor Line2D.Float(float) is undefined.
... hä?
Explizites Importieren von Float ist ja unnötig, da es im lang-package liegt. Wenn ich die Deklaration und Initialisierung mittels
Code:
private java.lang.Float acceleration = ...
durchführe passt es.

Warum ist das denn so?
Also ich verstehe nicht, warum
  1. das lang-package keinen Vorrang hat (weiß net wieso .. dachte, weil das so ein Spezialpackage ist )
  2. da überhaupt von einem solchen Konstruktor gesprochen wird

Kann das jemand mal bitte nachvollziehen und mir dann erklären, warum das so ist?

Dank und Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 11:44 Nach oben    #2
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.108
Standard

Es geht um den Scope.

Die Reihenfolge:
1. Klasse (d.h. unter anderem auch innere Klassen) und parent-Klassen
2. Package, in dem die Klasse liegt
3. Importierte Packages
4. java.lang

Die Sortierung macht bei genauerer Überlegung Sinn. Wenn es eine Klasse "Float" in deinem Objekt gibt, dann ist es wahrscheinlicher, dass du die verwenden willst, als dass du java.lang.Float möchtest.

Der Fehler mit dem Konstruktor kommt daher, dass du Line2D.Float(1.0f) aufrufst - und den Konstruktor gibt es nicht.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 11:50 Nach oben    #3
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.471
Standard

Okay. Sortierung finde ich auch logisch. Hatte ich nur noch nie so gesehen bzw. gelesen.

Zitat:
Zitat von pago
Der Fehler mit dem Konstruktor kommt daher, dass du Line2D.Float(1.0f) aufrufst - und den Konstruktor gibt es nicht.
Hö?
Wo mach ich das denn?

Ich rufe Float(..) auf und nicht Line2D.Float(..) ..
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 12:17 Nach oben    #4
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.108
Standard

Du bist aber in der Klasse Line2D, also greift die Hierarchie, die dir zuerst Line2D.Float serviert.

Line2D.Double erbt von Line2D, d.h. du könntest auch new Line2D.Double.Float.Double.Float.Float.Float() aufrufen...
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 12:43 Nach oben    #5
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.471
Standard

Zitat:
Zitat von pago
Line2D.Double erbt von Line2D, d.h. du könntest auch new Line2D.Double.Float.Double.Float.Float.Float() aufrufen...
Jou, äh .. hö?

Wenn möglich hätte ich das gerne nochmal erklärt .
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 13:51 Nach oben    #6
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.108
Standard

Einer Unterklasse stehen alle Methoden, Attribute und inneren Klassen einer Klasse zur Verfügung (visibility >= protected), d.h. die Klasse Line2D.Double hat die Klasse Float von Line2D geerbt, deshalb ist new Line2D.Double.Float() ein valider Ausdruck. Das wissend kann man das ganze rekursiv durchgehen. Line2D.Float hat die Klassen Double und Float von Line2D geerbt und man kann deshalb auf sie zugreifen.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 13:57 Nach oben    #7
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.471
Standard

Ok. Klingt logisch.
Hm, das heißt also, dass der Punkt im Klassennamen wirklich was zu bedeuten hat .. hehe.
Ich muss aber ehrlich gestehen, dass ich nicht so ganz verstehe, was das genau ist.

Wenn ich jetzt in die API schaue, dann sehe ich da nichts von der Klasse Float .

Woher weiß man also, dass es so ist, wie es zu sein scheint bzw. ist?
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 14:17 Nach oben    #8
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.108
Standard

Ich hab nen Beispiel-Programm geschrieben und das kompiliert...
Es funktioniert wirklich.

Zitat:
Nested classes/interfaces inherited from class java.awt.geom.Line2D
Line2D.Double, Line2D.Float
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 14:18 Nach oben    #9
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.471
Standard

Hm. So wirklich weiterbringen tut mich das nicht. Nunja. Ich nehm das einfach mal als "ist halt so" hin .
Man muss ja nicht alles wissen *gg*.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:49 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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