Package in Java

sousou

Bekanntes Mitglied
Hallo zusammen,


Ich b´beschäftige mich grad mit Packages in Java. Wusste dabei bis vor 2 stunden nichts hab mir aber nun so einige Infos angeeignet also z.B das man ein package macht um zugehörigkeiten von Klassen zu haben und dann der volle Name PackageName.Klassenname ist. Nun wollt ich ne Übungsaufgabe mal lösen die lautet:


static Attribute können in den eigenen Namensbereich importiert werden. Bsp:
import static java.lang.Math.PI
...
double radius = 4.2;
double umfang = 2*PI*radius;
Auch die Namen von Aufzählkonstanten können static importiert werden.
Schreiben Sie in einem Package rfh eine Aufzählung Unit mit den L¨angeneinheiten
Millimeter, Zentimeter usw., also mit den Konstanten mm, cm, dm, m. Im Konstruktor
soll jeweils die L¨ange gemessen in Millimeter mitgegeben werden, also 1 bei mm, 10 bei
cm usw.
Schreiben Sie außerhalb des Packages eine Klasse TestUnit
class TestUnit {
Unit x = cm; // diese Zeile nicht ver¨andern!
}
Erg¨anzen Sie die import-Anweisungen, damit TestUnit ohne Fehlermeldung compiliert.




Die Lösung hiervon ist:


Java:
   import RFH.Unit;
   import static RFH.Unit.cm ;

    class TestUnit {
      Unit x = cm;
   }   





package RFH;
   
	
    public enum Unit{
      	/* die konstanten sind immer public */
      mm(1),cm(10),dm(100),m(1000);
      
      int millimeter;
  
  
      
       Unit(int millimeter){
         this.millimeter=millimeter;
      }
		
		
      
  }


Meine Frage hierbei ist, außerhalb des Package erfolgen zwei import mit:


import RFH.Unit;
import static RFH.Unit.cm ;


Soganz versteh ich nicht was die Imports bewirken. In der Aufgabenstellung steht auch nur, dass man die einfügen sollte damit keine Fehlermeldungen angezeigt werden sollen.



lg
 

Landei

Top Contributor
Packages sind ganz einfach zu verstehen, es sind sozusagen die "Verzeichnisse", in denen die Klassen stehen.

Nehmen wir einmal eine ArrayList. Der "volle Name" ist java.util.ArrayList ("die Klasse ArrayList im Unterpackage util vom Package java"), und so könntest du ihn auch in jeder anderen Klasse immer so verwenden. Willst du das java.util. davor nicht jedesmal mitschreiben, schreibst du einmal import java.util.ArrayList, und ab da weiß Java, welche Klasse gemeint ist. Hast du nun eine Menge imports für ein bestimmtes package, kannst du mit Sternchen alle Klassen dort bekannt machen, in unserem Beispiel java.util.*

import static ist etwas anderes, es importiert statische Member aus einer Klasse. Angenommen du willst EMPTY_LIST oder sort() aus java.util.Collections verwenden. Dann hast du mit "normalen" imports (also import java.util.Collections oder java.util.*) die Möglichkeit, Collections.EMPTY_LIST oder Collections.sort(myList) aufzurufen. Alternativ kann man mit einem statischen Import die statischen Member "bekannt machen": Nach import static java.util.Collections.EMPTY_LIST bzw. import static java.utils.Collections.sort() "weiß" deine Klasse, dass mit EMPTY_LIST oder sort(myList) die statischen Member von Collections gemeint sind. Wiederum gibt es die Abkürzung mit dem Sternchen, so dass alle statischen Member bekannt gemacht werden: import static java.util.Collections.*;

imports und statische imports sind also "nur" kleine Helfer, damit man nicht immer die "vollen" Namen schreiben muss, etwa so, wie du in der Konsole statt den vollen Dateinamen anzugeben auch mit cd ins entsprechende Verzeichnis wechseln und dort die Datein ohne Pfadangabe ansprechen kannst.
 
Zuletzt bearbeitet:

sousou

Bekanntes Mitglied
danke erstmal, denke mal das import ohen static verstanden zu haben. Aber das mit static da kenn ich fast keine Klasse von denen du sprichst.

Könntest du es bissien kurz und knapp an meinen angegeben beispiel bitte erklären?



THX!
 

Landei

Top Contributor
Ich kenne dafür Unit nicht. Aber trotzdem: Mit dem "normalen" import (import RFH.Unit) wäre die Klasse Unit bekannt, und man könnte z.B. überall in deiner Klasse Unit.cm statt dem vollen Namen RFH.Unit.cm schreiben. Aber da das trotzdem immer noch etwas nervig ist, gibt es statische imports. Nach import static RFH.Unit.cm; weiß dein Programm, dass mit "cm" das cm aus RFH.Unit gemeint ist, du kannst es ohne den Zusatz Unit. einfach als cm verwenden.

Eine Klasse, die du bestimmt kennst, ist java.lang.Math, die auch oft statisch importiert wird (import static java.lang.Math.*). Danach kann man all die statischen mathematischen Funktionen ohne den Vorsatz Math. aufrufen, also sqrt(2) statt Math.sqrt(2), sin(PI/6) statt Math.sin(PI/6) usw.

Da ist wirklich nichts weiter dabei, imports sind einfach "Abkürzungen", damit man nicht immer die ganzen Namen schreiben muss, sonst nichts. Woher soll das Programm auch wissen, ob du mit "List" die Klasse java.awt.List oder java.util.List meinst? Oder was dieses "cm" bedeuten soll, was nirgendwo definiert ist. Du sagst: "Das cm, das ich meine, kommt aus RFH.Unit.cm", und gut ist. Wenn du das nicht verstehst, schlage ich die Hände über dem Kopf zusammen, renne schreiend im Kreis und verweise auf Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 3.5 Pakete und import-Deklarationen nutzen
 
Zuletzt bearbeitet:

sousou

Bekanntes Mitglied
achsoo, ja total easy jetzt ;) danke also

kurz zusammengefasst:

ohne statischen import nur normalen Import also import RFH.Unit:

x = Unit.cm;


bedeutet so gesehen einfach mit staitischen import also import static RFH.Unit.cm:

x = cm;


Dies gibt es dann nicht?...import RFH.Unit.cm
 

Landei

Top Contributor
Genau. Ein normaler import bezieht sich immer auf eine Klasse oder ein Interface (oder mit Sternchen auf mehrere).
Ein statischer Import bezieht sich immer auf die statischen Member einer Klasse oder eines Interfaces (oder mit Sternchen auf mehrere).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Kompilieren über Package grenzen hinaus Java Basics - Anfänger-Themen 4
L Java Package View Java Basics - Anfänger-Themen 6
B JAVA Package Problem Java Basics - Anfänger-Themen 8
J Java Package - HelloWorld Java Basics - Anfänger-Themen 10
P ArrayList<E> in package java.util Java Basics - Anfänger-Themen 4
C import von Java Klasse ohne package Java Basics - Anfänger-Themen 10
M Was versteht man unter Java einen Package ? Java Basics - Anfänger-Themen 17
J Welche Parameter bei java um Klasse aus Package zu starten? Java Basics - Anfänger-Themen 9
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
java-starter Erste Schritte import von package Java Basics - Anfänger-Themen 4
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
A OOP Komposition per Package-Sichtbarkeit Java Basics - Anfänger-Themen 2
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
P Maven-Dependencies (package org.apache.http.nio does not exist) Java Basics - Anfänger-Themen 6
N package wird doppelt im exporer angezeigt Java Basics - Anfänger-Themen 2
H Was sind Package bei eclipse? Java Basics - Anfänger-Themen 1
O Package import-Klausel Java Basics - Anfänger-Themen 10
V Datentypen Default Package Java Basics - Anfänger-Themen 1
J Datei im Package zur Laufzeit editieren Java Basics - Anfänger-Themen 1
T Compiler-Fehler Eclipse: leerer Package Explorer Java Basics - Anfänger-Themen 4
L Eine Klasse aus dem gleichen Package starten Java Basics - Anfänger-Themen 3
Clarence Weinberg Eclipse: Package wird erst nach Neustart aktuallisiert Java Basics - Anfänger-Themen 1
K Dateien aus Source-Package verwenden Java Basics - Anfänger-Themen 10
Z AWT package -> keine Konsole? Java Basics - Anfänger-Themen 2
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
D Bitte um Hilfe bei "error: package com.apple.eawt does not exist import com.apple.eawt.*;" Java Basics - Anfänger-Themen 1
G eigenes package Java Basics - Anfänger-Themen 3
N Fehler beim importieren vom package Java Basics - Anfänger-Themen 2
T Erste Schritte run innerhalb eines package Java Basics - Anfänger-Themen 1
C Klassen aus einem Package ermitteln und per Laufzeit laden Java Basics - Anfänger-Themen 17
D Subpackage / Package in Package Java Basics - Anfänger-Themen 6
D Ein Icon ohne Pfad sondern mit Package. Java Basics - Anfänger-Themen 4
P Zip in package speichern/auslesen? Java Basics - Anfänger-Themen 4
M Erste Schritte package-Deklaration, Problem Java Basics - Anfänger-Themen 6
Ananaskirsche Methoden Auf Methode in anderem Package zugreifen Java Basics - Anfänger-Themen 3
S Funktionen/Atrribute nur innerhalb einer package Zugänglich machen Java Basics - Anfänger-Themen 8
J BlueJ öffnet package falsch Java Basics - Anfänger-Themen 2
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
OnDemand Package Anweisungen Java Basics - Anfänger-Themen 3
L Package wird nicht richtig importiert Java Basics - Anfänger-Themen 4
LittleJavaCup Zugriff auf Klasse von package Java Basics - Anfänger-Themen 3
S Datei in Package ablegen Java Basics - Anfänger-Themen 11
B Definieren von package scope Java Basics - Anfänger-Themen 2
F Eigenes Package - Variable exportieren Java Basics - Anfänger-Themen 11
J "public int x" - Zugriff von anderer Klasse (selbes Package) nicht möglich?! Java Basics - Anfänger-Themen 4
H Innerhalb eines Package wird eine Klassenmethode nicht gefunden. Java Basics - Anfänger-Themen 2
S Ordner / Package Struktur bei größerem Projekt? Java Basics - Anfänger-Themen 8
S Classpath Externes Package einbinden (zip-Datei) Java Basics - Anfänger-Themen 9
Q Classpath Package import Java Basics - Anfänger-Themen 6
J Kompilieren mit Package funktioniert nicht Java Basics - Anfänger-Themen 40
L aus package auf klasse Ausserhalb des package zugreifen, wie? Java Basics - Anfänger-Themen 8
Luk10 Package Namen Java Basics - Anfänger-Themen 5
F Mit javac Package compilieren Java Basics - Anfänger-Themen 3
N Probleme mit dem Erstellen eines package Java Basics - Anfänger-Themen 6
Q Aufruf einer Klasse in einem Package Java Basics - Anfänger-Themen 7
P Nachträglich Klasse zu Package hinzufügen Java Basics - Anfänger-Themen 16
B Interface Nach "package"-Nennung keine Toolbar-Icons mehr Java Basics - Anfänger-Themen 5
S Classpath package unbekannt Java Basics - Anfänger-Themen 5
G Package Java Basics - Anfänger-Themen 5
T Applet init() funktioniert nur im default package Java Basics - Anfänger-Themen 5
C Package einbinden - "cannot access" Java Basics - Anfänger-Themen 5
B Eigenes Package Java Basics - Anfänger-Themen 6
F Zugriff auf Instanzobjekte - Package does not exist Java Basics - Anfänger-Themen 10
M Problem mit package und Vererbung Java Basics - Anfänger-Themen 6
S Wie sollte man Package bezeichnen Java Basics - Anfänger-Themen 2
B package benutzen Java Basics - Anfänger-Themen 6
E Welcher Package Name bei Eclipse/Android? Java Basics - Anfänger-Themen 2
F import Statement für Klassen die dem default Package zugeordnet sind? Java Basics - Anfänger-Themen 2
D package javax.comm does not exist Java Basics - Anfänger-Themen 5
M Package Namen ändern Java Basics - Anfänger-Themen 3
Luk10 package system does not exsist Java Basics - Anfänger-Themen 2
B Matrix package ? Java Basics - Anfänger-Themen 7
S OOP package Deklaration Java Basics - Anfänger-Themen 4
N static package de.hallo; ??? Java Basics - Anfänger-Themen 4
M package in Netbeans IDE Java Basics - Anfänger-Themen 3
L ClassLoader - Daten aus einem Package laden Java Basics - Anfänger-Themen 3
A Nicht verwendete Klassen aus großem Package löschen Java Basics - Anfänger-Themen 9
G package im bin ordner Java Basics - Anfänger-Themen 2
A Erstellener einer Jar Datei mit eigenem Package Java Basics - Anfänger-Themen 9
B package org.jdesktop.layout does not exist Java Basics - Anfänger-Themen 8
I Listener Klassen in Package Java Basics - Anfänger-Themen 3
K Bilder/Dateien aus package einlesen Java Basics - Anfänger-Themen 14
S package problem Java Basics - Anfänger-Themen 2
E Read a file in a package Java Basics - Anfänger-Themen 2
F package erstellen Java Basics - Anfänger-Themen 4
M Fehler: package javax.portlet does not exist Java Basics - Anfänger-Themen 2
M Hilfe zu package und import Java Basics - Anfänger-Themen 6
G problem mit package Java Basics - Anfänger-Themen 15
G Kein EJB-Package vorhanden Java Basics - Anfänger-Themen 2
S API laden problem mit package Java Basics - Anfänger-Themen 2
I package, import und Vererbung mit static Java Basics - Anfänger-Themen 8
G ressourcen in anderem Package Java Basics - Anfänger-Themen 9
G Package in JBuilder einbinden wirft tausende Fehler aus Java Basics - Anfänger-Themen 15
N package Problem Java Basics - Anfänger-Themen 3
V Unbekannte Klassen aus einem Package laden? Java Basics - Anfänger-Themen 4
G Servlet Package wo herunterladen? Java Basics - Anfänger-Themen 2
G kann Klassen aus eigenem Package nicht verwenden Java Basics - Anfänger-Themen 15
B Umwandlung gemäß Package-Anweisung Java Basics - Anfänger-Themen 5
G Wofür com package? + Welche eclipse - Plug Ins? Java Basics - Anfänger-Themen 3
I Methode aus zweitem Package aufrufen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben