title: Netbeans warning: Exporting non-public type through public API
body: <p>I'm creating a Slick2D game. Right now, I'm creating a Video class, which contains inner classes (FrameSize, FPS, FullScreen..). So I had an OOD idea to crate in way, like we call System.out.println(). That means that I will have public Video class and public static instances of his inner clasess, but netbeans IDE throws me a hint with "Exporting non-public type through public API ". So, should I just ignore that and keep doing the way I was doing or it would be great if you could suggest me your idea?</p>
  
  <p>VIDEO</p>
  
  <pre><code>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 &amp;&amp; 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;
          }
  
      }
  
  }
  </code></pre>
  
  <p>AUDIO</p>
  
  <pre><code>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 &amp;&amp; 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 &gt;= 0.0 &amp;&amp; volume &lt;= 10.0;
          }
  
      }
  
  }
  </code></pre>