Javaで
の定義済みパッケージと同じ名前のパッケージを作成することはできますか?java.lang
などですか?カスタムjava。*パッケージを作成できますか?
もしそうなら、結果はどうなるでしょうか?そのパッケージののメンバーにアクセスできますか?
もしそうでなければ、私はそうしないのですか?
Javaで
の定義済みパッケージと同じ名前のパッケージを作成することはできますか?java.lang
などですか?カスタムjava。*パッケージを作成できますか?
もしそうなら、結果はどうなるでしょうか?そのパッケージののメンバーにアクセスできますか?
もしそうでなければ、私はそうしないのですか?
いいえ - java.lang
は禁止されています。セキュリティ管理者はjava.lang
パッケージ内の "カスタム"クラスを許可しておらず、受け入れるよう指示する方法はありません。
あなたはjava.lang
名前空間で宣言された自分自身のクラスを使って、protected
メソッドとそのクラスのメンバーを使用できますが、これは間違いありません。
これは罰金コンパイル - しかし - それを実行してみてください。)
package java.lang;
public class EvilAsEvilCanBe {
public static void main(String[] args) {
System.out.println("hehe");
}
}
はあなたを防止二つのものがあります。
1)使用許諾契約。注:rt.jarのクラスを上書きする目的でこのオプションを使用するアプリケーションは、Java 2 Runtime Environmentのバイナリコードライセンスに反するため、展開しないでください。 http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html
2)-Xbootclasspath:bootclasspath
を使用するか、lib/endorsedディレクトリを追加する必要があります。
いくつかのクラスは、JVMの内部最適化のために簡単には変更されません。 )Object to Sun/OracleのJVMに複数のメソッドを追加することはできません;
"java。*"に一致するパッケージ名は禁止され、セキュリティ例外がスローされます。
私はサンプルパッケージとしてjava.langを提供しましたか?あなたはセキュリティ管理者がそれを防ぐと言いました。しかし、これは、例えばセキュリティ管理者や何らかの種類のライセンスを持っていないサードパーティ製のパッケージを使って行うことができるということですか? –
@AB Najjar - あなたのクラスを他のツールと同じ名前空間(=パッケージ)に宣言することができます。そして、それらのパッケージのprivateクラス、メソッド、およびフィールドを使用することができます。そして、彼らはあなたのものを使うことができます。 **しかし**:これは技術的に可能で、通常は悪い習慣と考えてください。他のlibsを協調的な方法で使用してください。通常、人々は*パッケージ*をプライベートなものとして宣言します。 –
それは私にそのパッケージの保護されたメンバーへのアクセスを許可しますか?それは厄介でも間違っているのではないですか? –