問題タブ [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.
scala - package-private クラスの移動 — バイナリに互換性がないと考えるべきですか?
Windowsでのパッケージ名に問題があるためaux
、ライブラリのパッケージ階層内のヘルパー クラスを から移動しています。
に
クラスはライブラリに対してプライベートprivate[scalainterpreter] object Helper
です。
Typesafe Migration-Managerを使用すると、明らかに、変更に互換性がないことが報告されます。
しかし、クライアント コードがどちらのオブジェクトも呼び出さない場合でも、インターフェイスには互換性があるのではないかと思います。そのため、マイナー バージョンの増加を使用して変更を示し、これら 2 つのバージョンを同じ意味で使用できるようにすることができます。
正しい?
java - Eclipse プロジェクト間で共有されるクラスのパッケージ プライベート フィールドへのアクセス
2 つの Eclipse プロジェクトで使用しているモデル クラス ( MVC パターン) があります。
1 つのプロジェクト ( と呼びましょうProducer
) は、ストリームからデータをキャプチャしてデータベースに保存しています。問題のモデルクラス、たとえばObjectModel
は、シリアライズしてデータベースに格納する前に、操作のためにストリームをデシリアライズするために使用されます。
別のプロジェクト ( と呼びましょうConsumer
) は、データベースに保存されているデータを取り込み、画面上で視覚化しています。同じモデル クラスを使用して、保存されたデータを視覚化アプリケーションで使用するために逆シリアル化します。
プロジェクト全体でObjectModel
ソースを共有するために、Eclipse プロジェクトに入れることを計画しました。ただし、現在、各アプリケーションには、package-private アクセス修飾子を利用して のフィールドを取得および設定するクラスが同じパッケージに含まれています。Producer
Consumer
ObjectModel
複数の Eclipse プロジェクトでソースを共有し、共有ソースへのパッケージ プライベート アクセスを維持する方法はありますか?
更新: Eclipse プロジェクト間でコードを共有するのに問題がありました。そのため、投稿する前にこれを試しませんでした。最後にその部分が機能するようになり、別の回答としてここに書きました。
java - リフレクションを使用した非表示クラスへのアクセス
リフレクションを使用して、非表示クラス、別名パッケージプライベートクラスのインスタンスを取得しようとしています。修飾子を切り替えて公開し、を使用してアクセスする方法があるかどうか疑問に思いましたClass.forName
。私が今それを試みるとき、それは私がそれをすることができないと言うのを止めます。残念ながら、クラスのsetAccesible
メソッドはありません。Class
android - SurfaceView からアクティビティでパッケージ プライベート メソッドを呼び出すにはどうすればよいですか?
Activity クラスに、SurfaceView 内で呼び出したい非静的なパッケージ プライベート メソッドがあります。たとえば、surfaceChanged() または surfaceDestroyed() です。
これを行うより良い方法はありますか?また、同じアクティビティに toggleFlash() メソッドがあるため、キー リスナーを介してアクティビティ内からフラッシュを切り替えることができます。
java - Javaで安全でないコードを実行する(セキュリティマネージャを無効にする)方法はありますか?
「これをしてはいけない」という答えを投稿しないでください。これを本番コードで使用する予定はありませんが、ハッキングを楽しむためだけに使用します。
この質問に答える際に、私は楽しみのために任意の安全でないJavaコードを実行したいと思いました。問題のコードには、Javaのリーフノードだけを見つけることが含まれますTreeMap
。
以下のコードを実行すると、
この質問によると、私System.setSecurityManager(null)
はこれらの制限のほとんどを回避するために使用できます。しかし、クラスがロードされるときにエラーがポップアップするため、これを行うことはできません。
セキュリティマネージャを無効にした後、リフレクションを使用してやりたいことがすべてできることをすでに知っています。しかし、それはコードをはるかに醜くします。コアJava開発者は、たとえば、パッケージ化できない場合、どのように単体テストを作成しjava.util
ますか?
私も試し-Djava.security.manager=...
ましたが、これをに設定するとJVM初期化エラーが発生しnull
、他に何に設定できるかわかりません。何か案は?
java - Java で package-private を使用するのはいつですか?
私はどの言語でもアクセス制御が大好きですが、Java ではpackage-privateアクセス修飾子を使用することはほとんどありません (または使用しない)。
内部クラスはprivate
、protected
、またはにすることができますが、外部クラスはまたはpackage-private
のみにすることができます。外側のクラスが であるのに ではないのはなぜですか? サブクラスではなく、パッケージ全体でクラス/メソッド/フィールドが見えるように制限する利点は何ですか?package-private
public
package-private
protected
java - Java - プライベートとパッケージプライベートの列挙型コンストラクターの違い
最近、私はかなり頻繁に列挙型を使用しています。それで、私は疑問に思います...
プライベート Enum コンストラクターと、可視性修飾子 (package-private) を使用した列挙型コンストラクターの間に違いはありますか?
java - この型のキャストを避ける方法はありますか?
Foo
インターフェイスを定義および実装する次のクラスを検討してください。
外部クラスは、オブジェクトMyClass.getFoo()
を取得するために呼び出し、Foo
それを に戻す場合がありますfooMethod()
。package-private method を呼び出すことができるように、 の実装とキャストをfooMethod()
想定しています。FooImpl
Foo
Foo
FooImpl
hiddenMethod()
Foo
私の質問は、私は へのキャストに夢中ではないということですFooImpl
。同じことを行うために使用できる別のパターンはありますか?
前もって感謝します...