Netbeans Warnung: der Export von nicht-öffentlicher Art durch öffentliche API
Ich bin erstellen einer Slick2D game. Jetzt bin ich durch ein Video-Klasse, die enthält innere Klassen (FrameSize, FPS, FullScreen..). So hatte ich ein GUTES Idee um die Kiste in der Art und Weise, wie wir es nennen-System.aus.println(). Das bedeutet, dass ich die öffentlichen Video-Klasse und öffentliche, statische Instanzen von seiner inneren clasess, aber netbeans IDE wirft mir einen Tipp mit "Export von nicht-öffentlicher Art durch öffentliche API ". So, soll ich das einfach ignorieren und weiterhin tun, die Art und Weise, die ich Tat, oder es wäre toll, wenn könnten Sie mir empfehlen, Ihre Idee?
VIDEO
public class Video {
public static FrameSize frameSize;
public static FullScreen fullScreen;
public static FPS fps;
private Video() {}
public static void loadArguments(Scanner loadInput) {
boolean isVideo = false;
String readLine;
while (loadInput.hasNext()) {
readLine = loadInput.next();
if (readLine.equalsIgnoreCase("video")) {
isVideo = true;
break;
}
}
while (isVideo && loadInput.hasNext()) {
readLine = loadInput.next();
if (readLine.equalsIgnoreCase("end")) {
break;
}
String[] line = readLine.split("=");
String key = line[0];
String value = line[1];
switch (key) {
case "width":
frameSize.setWidth(Integer.parseInt(value));
break;
case "height":
frameSize.setHeight(Integer.parseInt(value));
break;
case "fullscreen":
break;
case "fps":
break;
default:
System.err.println("Unknown video key: " + key);
break;
}
}
}
public static void saveArguments(String filePath) {
Scanner saveInput;
try {
saveInput = new Scanner(new File(filePath));
} catch (FileNotFoundException fne) {
System.err.println("Invalid settings-file.");
return;
}
//TO DO: save function
saveInput.close();
}
class FrameSize {
public final int[][] SIZE_VALUES = {
{800, 600},
{1000, 700},
{1200, 800},
{1400, 900}
};
private int index;
private int width, height;
private FrameSize() {}
public void setSize(int width, int height) {
this.width = width;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
@Override
public String toString() {
return this.width + " x " + this.height;
}
}
class FullScreen {
private boolean fullScreen;
private FullScreen() {}
public boolean isFullScreen() {
return fullScreen;
}
public void setFullScreen(boolean fullScreen) {
this.fullScreen = fullScreen;
}
@Override
public String toString() {
return "" + fullScreen;
}
}
class FPS {
private boolean FPS;
private FPS() {}
public boolean isFPS() {
return FPS;
}
public void setFPS(boolean FPS) {
this.FPS = FPS;
}
@Override
public String toString() {
return "" + fps;
}
}
}
AUDIO
public class Audio {
private static Sound sound;
private static Volume volume;
private Audio() {}
public void loadArguments(Scanner loadInput) {
boolean isAudio = false;
String readLine;
while (loadInput.hasNext()) {
readLine = loadInput.next();
if (readLine.equalsIgnoreCase("audio")) {
isAudio = true;
break;
}
}
while (isAudio && loadInput.hasNext()) {
readLine = loadInput.next();
if (readLine.equalsIgnoreCase("end")) {
break;
}
String[] line = readLine.split("=");
String key = line[0];
String value = line[1];
switch (key) {
case "sound":
break;
case "volume":
break;
default:
System.err.println("Unknown audio key: " + key);
break;
}
}
}
public void saveArguments(String filePath) {
Scanner saveInput;
try {
saveInput = new Scanner(new File(filePath));
} catch (FileNotFoundException fne) {
System.err.println("Invalid settings-file.");
return;
}
//TO DO: save function
saveInput.close();
}
class Sound {
private boolean sound;
private Sound() {}
public boolean isSound() {
return sound;
}
public void setSound(boolean sound) {
this.sound = sound;
}
@Override
public String toString() {
return "" + sound;
}
}
class Volume {
private static final double PITCH = 0.1d;
private double volume;
private Volume() {}
public double getVolume() {
return volume;
}
public void setVolume(double volume) {
this.volume = volume;
}
public void increaseVolume() {
if (!isVolumeRange(this.volume)) {
return;
}
this.volume = this.volume + PITCH;
}
public void decreaseVolume() {
if (!isVolumeRange(this.volume)) {
return;
}
this.volume = this.volume - PITCH;
}
public boolean isVolumeRange(double volume) {
return volume >= 0.0 && volume <= 10.0;
}
}
}
- gut der Fehler ist ganz klar imo.. vielleicht migrieren Klassen, die nicht zu b e öffentliche und vielleicht verwenden Sie eine Schnittstelle zu exportieren, was Sie brauchen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Video
- Klasse enthält die Deklaration einer öffentlichen Klasse variableframeSize
TypFrameSize
.Ein
public
Modifikator bedeutet, dassframeSize
variable ist für alle sichtbar.Jedoch
FrameSize
ist eine lokale Klasse - es ist nur sichtbar für Mitglieder des gleichen Pakets. Im obigen Beispiel sind nur die Mitglieder des Paketspackage1
können sehen, dass die Klasse, und unten code kompiliert fein:aber dieser code (anderes Paket) gibt einen Kompilierungsfehler:
NetBeans warnt Sie über diese, weil die meisten wahrscheinlich es ist, unbeabsichtigte Fehler - warum wollen Sie, um einige field-Wert für alle zugänglich, ohne die Veröffentlichung der Art von diesem Bereich auch, dass im Effekt verhindert, dass Sie von der Verwendung des Feld ?
Wenn Sie möchten, machen Sie die variable nur zugänglich für andere Klassen innerhalb das gleiche Paket, deklarieren Sie Sie als
protected
, nichtpublic
.Aber wenn es eine absichtliche Erklärung - dann ignorieren Sie die Warnung, und lassen Sie es wie es ist.
FrameSize
eine öffentliche Klasse, wenn Sie wollen, dass es sichtbar sein, in anderen Paketen.