0

次のインターフェイスの減速があるとします。

public interface classListener<classEvent> {

    void classMethod1(classEvent x);
    void classMethod2(classEvent y);
    void classMethod3(classEvent z);
}

そして、このインターフェースをwhatever.somethingパッケージに追加したいとします。

私は何をすべきか ?

4

2 に答える 2

1

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を使用します。

于 2012-04-18T09:31:39.260 に答える
0

パッケージ decl は、以下のコンテンツの名前空間を作成します。インターフェイス ファイルの最初の行としてパッケージ宣言を追加するだけです。

パッケージ org.whatever.foo

パブリック インターフェイス ....

于 2012-04-18T09:35:18.353 に答える