次のインターフェイスの減速があるとします。
public interface classListener<classEvent> {
void classMethod1(classEvent x);
void classMethod2(classEvent y);
void classMethod3(classEvent z);
}
そして、このインターフェースをwhatever.somethingパッケージに追加したいとします。
私は何をすべきか ?
package
ファイルの先頭にステートメントを置きます。
package your.package.name;
public interface classListener<classEvent> {
void classMethod1(classEvent x);
void classMethod2(classEvent y);
void classMethod3(classEvent z);
}
このインターフェースをjava.somethingパッケージに追加したいとします。
java.
パッケージに追加することはできません。これはJDK(Sunを買収してから現在Oracleによって制御されている)のためだけのものです。コンパイルされますが、使用しようとするとSecurityException
:が表示されます。
スレッド"main"の例外java.lang.SecurityException:禁止されているパッケージ名:java.util java.lang.ClassLoader.preDefineClass(ClassLoader.java:479)で java.lang.ClassLoader.defineClassCond(ClassLoader.java:625)で java.lang.ClassLoader.defineClass(ClassLoader.java:615)で java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)で java.net.URLClassLoader.defineClass(URLClassLoader.java:283)で java.net.URLClassLoader.access $ 000(URLClassLoader.java:58)で java.net.URLClassLoader $ 1.run(URLClassLoader.java:197)で java.security.AccessController.doPrivileged(ネイティブメソッド)で java.net.URLClassLoader.findClass(URLClassLoader.java:190)で java.lang.ClassLoader.loadClass(ClassLoader.java:306)で sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)で java.lang.ClassLoader.loadClass(ClassLoader.java:247)で java.lang.ClassLoader.defineClass1(ネイティブメソッド)で java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)で java.lang.ClassLoader.defineClass(ClassLoader.java:615)で java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)で java.net.URLClassLoader.defineClass(URLClassLoader.java:283)で java.net.URLClassLoader.access $ 000(URLClassLoader.java:58)で java.net.URLClassLoader $ 1.run(URLClassLoader.java:197)で java.security.AccessController.doPrivileged(ネイティブメソッド)で java.net.URLClassLoader.findClass(URLClassLoader.java:190)で java.lang.ClassLoader.loadClass(ClassLoader.java:306)で sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)で java.lang.ClassLoader.loadClass(ClassLoader.java:247)で メインクラスUsePackageが見つかりませんでした。プログラムは終了します。
私にそのエラーを与えた私のコード:
で~/temp/java/util/AddPackage.java
:
package java.util;
public interface AddPackage {
void doSomething();
}
で~/temp/UsePackage.java
:
import java.util.AddPackage;
class UsePackage implements AddPackage {
public static final void main(String[] args) {
new UsePackage().doSomething();
}
public void doSomething() {
System.out.println("Hi");
}
}
コマンド:
〜/ temp $ javac java / util / AddPackage.java〜 / temp $ javac UsePackage.java〜 / temp $ java UsePackage
...エラーが発生しました。Oracle(Sun)のJVMを使用します。
パッケージ decl は、以下のコンテンツの名前空間を作成します。インターフェイス ファイルの最初の行としてパッケージ宣言を追加するだけです。
パッケージ org.whatever.foo
パブリック インターフェイス ....