wie importiere ich eine Aufzählung (enum)

3Cyb3r

Erfahrenes Mitglied
Hallo,

ich habe eine package basecode:
Java:
package basecode;

enum playerType
{
  PLAYER_HUMAN,
  PLAYER_AI
};

abstract public class Player {
	
	protected Type element;
	protected Engine engine;
	
	abstract protected  Position do_action(final Field field);
	
	public Player(Type element) {
		this.element = element;
	}
	
	public final Type getElementType() {
		return this.element;
	}
	
	public Position action(Field field) {
		return this.do_action(field);
	}
	
	public void setEngine(Engine engine) {
		this.engine = engine;
	}
	
	
}

und möchte nun in einenm anderen Package die enum verwenden:
Java:
package console;

import basecode.Engine;

import basecode.Position;
import basecode.Type; // Error Type is not visible

public class ConsoleEngine extends Engine {

	private void display() {
		
	}
	
//	static char dispatchElement(Type element);
	
	protected void do_invalidPosition(){
	
	}
	
	protected void do_initialize() {
		
	}
	
	protected void do_update(Position position) {
		
	}
	
	protected void do_winner(Type element) { // überall bei Type error Type cannot resolved to a type. 
		
	}
	
	protected Position do_getHumanAction() {
		return new Position(2,0);
	}
	
	public char dispatchElement(Type element)
	{
	  if (element == Type.Player_1) return 'x';
	  if (element == Type.Player_2) return 'o';
	  return ' ';
	}

Bekomme ich imemr Fehler auch wenn ich das import weglasse wird der Typ nicht gefunden. Wie kann ich es importieren?

Danke^^
 
In Java fangen Klassen, Interfaces, Annotations und Enums immer groß an. Dann kannst du das Semikolon hinter der geschweiften Klammer weglassen, das ist kein C++.

Und nun zu deinem Problem: Dein Enum heißt PlayerType, du versuchst aber Type zu verwenden/importieren. Also musst du entweder den Namen zu Type ändern oder in der anderen Klasse Type zu PlayerType ändern. Das allein würde aber noch nix helfen, denn dein Enum hat die Package-Sichtbarkeit und das ist wenn ich mich nicht falsch erinnere protected. Das heißt du kannst dein Enum innerhalt des basecode-Packages verwenden, sonst aber nicht. Daher muss die Sichtbarkeit noch auf public gemacht werden, damit du damit auch außerhalb des Packages arbeiten kannst.

Wenn man dann alles so macht, dann sollte es so aussehen:
Java:
package basecode;

public enum PlayerType
{
  PLAYER_HUMAN,
  PLAYER_AI
}
 
…hat die Package-Sichtbarkeit und das ist wenn ich mich nicht falsch erinnere protected
Stimmt nicht ganz:
Paketsichtbarkeit (default) bedeutet, alle Klassen im selben Paket können die Klasse sehen.
protected beinhaltet default und bedeutet, alle Klassen im selben Paket und alle Klassen die von dieser Klasse erben, können die Klasse sehen.

EDIT: Wenn es dich genauer interessiert http://download.oracle.com/javase/tutorial/java/concepts/package.html, http://openbook.galileocomputing.de/javainsel9/javainsel_03_006.htm und http://download.oracle.com/javase/tutorial/java/package/index.html sollten weiterhelfen ;)
 
Zuletzt bearbeitet:
Stimmt nicht ganz:
Paketsichtbarkeit (default) bedeutet, alle Klassen im selben Paket können die Klasse sehen.
protected beinhaltet default und bedeutet, alle Klassen im selben Paket und alle Klassen die von dieser Klasse erben, können die Klasse sehen.
Ja, irgendwie so war das, war mir ja auch nicht mehr ganz sicher. Aber danke für die Korrektur ^^
 
Zurück