問題タブ [package-private]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
216 参照

scala - package-private クラスの移動 — バイナリに互換性がないと考えるべきですか?

Windowsでのパッケージ名に問題があるためaux、ライブラリのパッケージ階層内のヘルパー クラスを から移動しています。

クラスはライブラリに対してプライベートprivate[scalainterpreter] object Helperです。

Typesafe Migration-Managerを使用すると、明らかに、変更に互換性がないことが報告されます。

しかし、クライアント コードがどちらのオブジェクトも呼び出さない場合でも、インターフェイスには互換性があるのではないかと思います。そのため、マイナー バージョンの増加を使用して変更を示し、これら 2 つのバージョンを同じ意味で使用できるようにすることができます。

正しい?

0 投票する
2 に答える
991 参照

java - Eclipse プロジェクト間で共有されるクラスのパッケージ プライベート フィールドへのアクセス

2 つの Eclipse プロジェクトで使用しているモデル クラス ( MVC パターン) があります。

1 つのプロジェクト ( と呼びましょうProducer) は、ストリームからデータをキャプチャしてデータベースに保存しています。問題のモデルクラス、たとえばObjectModelは、シリアライズしてデータベースに格納する前に、操作のためにストリームをデシリアライズするために使用されます。

別のプロジェクト ( と呼びましょうConsumer) は、データベースに保存されているデータを取り込み、画面上で視覚化しています。同じモデル クラスを使用して、保存されたデータを視覚化アプリケーションで使用するために逆シリアル化します。

プロジェクト全体でObjectModelソースを共有するために、Eclipse プロジェクトに入れることを計画しました。ただし、現在、各アプリケーションには、package-private アクセス修飾子を利用して のフィールドを取得および設定するクラスが同じパッケージに含まれています。ProducerConsumerObjectModel

複数の Eclipse プロジェクトでソースを共有し、共有ソースへのパッケージ プライベート アクセスを維持する方法はありますか?

更新: Eclipse プロジェクト間でコードを共有するのに問題がありました。そのため、投稿する前にこれを試しませんでした。最後にその部分が機能するようになり、別の回答としてここに書きました。

0 投票する
6 に答える
48534 参照

java - リフレクションを使用した非表示クラスへのアクセス

リフレクションを使用して、非表示クラス、別名パッケージプライベートクラスのインスタンスを取得しようとしています。修飾子を切り替えて公開し、を使用してアクセスする方法があるかどうか疑問に思いましたClass.forName。私が今それを試みるとき、それは私がそれをすることができないと言うのを止めます。残念ながら、クラスのsetAccesibleメソッドはありません。Class

0 投票する
1 に答える
916 参照

android - SurfaceView からアクティビティでパッケージ プライベート メソッドを呼び出すにはどうすればよいですか?

Activity クラスに、SurfaceView 内で呼び出したい非静的なパッケージ プライベート メソッドがあります。たとえば、surfaceChanged() または surfaceDestroyed() です。

これを行うより良い方法はありますか?また、同じアクティビティに toggleFlash() メソッドがあるため、キー リスナーを介してアクティビティ内からフラッシュを切り替えることができます。

0 投票する
3 に答える
2022 参照

java - Javaで安全でないコードを実行する(セキュリティマネージャを無効にする)方法はありますか?

「これをしてはいけない」という答えを投稿しないでください。これを本番コードで使用する予定はありませんが、ハッキングを楽しむためだけに使用します。

この質問に答える際に、私は楽しみのために任意の安全でないJavaコードを実行したいと思いました。問題のコードには、Javaのリーフノードだけを見つけることが含まれますTreeMap

以下のコードを実行すると、

この質問によると、私System.setSecurityManager(null)はこれらの制限のほとんどを回避するために使用できます。しかし、クラスがロードされるときにエラーがポップアップするため、これを行うことはできません。

セキュリティマネージャを無効にした後、リフレクションを使用してやりたいことがすべてできることをすでに知っています。しかし、それはコードをはるかに醜くします。コアJava開発者は、たとえば、パッケージ化できない場合、どのように単体テストを作成しjava.utilますか?

私も試し-Djava.security.manager=...ましたが、これをに設定するとJVM初期化エラーが発生しnull、他に何に設定できるかわかりません。何か案は?

0 投票する
2 に答える
18081 参照

java - Java で package-private を使用するのはいつですか?

私はどの言語でもアクセス制御が大好きですが、Java ではpackage-privateアクセス修飾子を使用することはほとんどありません (または使用しない)。

内部クラスはprivateprotected、またはにすることができますが、外部クラスはまたはpackage-privateのみにすることができます。外側のクラスが であるのに ではないのはなぜですか? サブクラスではなく、パッケージ全体でクラス/メソッド/フィールドが見えるように制限する利点は何ですか?package-privatepublicpackage-privateprotected

0 投票する
2 に答える
1669 参照

java - Java - プライベートとパッケージプライベートの列挙型コンストラクターの違い

最近、私はかなり頻繁に列挙型を使用しています。それで、私は疑問に思います...

プライベート Enum コンストラクターと、可視性修飾子 (package-private) を使用した列挙型コンストラクターの間に違いはありますか?

0 投票する
3 に答える
180 参照

java - この型のキャストを避ける方法はありますか?

Fooインターフェイスを定義および実装する次のクラスを検討してください。

外部クラスは、オブジェクトMyClass.getFoo()を取得するために呼び出し、Fooそれを に戻す場合がありますfooMethod()。package-private method を呼び出すことができるように、 の実装とキャストをfooMethod()想定しています。FooImplFooFooFooImplhiddenMethod()

Foo私の質問は、私は へのキャストに夢中ではないということですFooImpl。同じことを行うために使用できる別のパターンはありますか?

前もって感謝します...