問題タブ [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.
java - パッケージプライベートメソッドにアクセスする外部クラス
パッケージにクラスがあり、org.jake
デフォルトのアクセス権(修飾子なし)を持つメソッドがあるとします。その場合、メソッドはパッケージ内にのみ表示されます。
しかし、誰かが私のフレームワークのjarを受け取ったとき、彼らが新しいクラスを作成し、そのパッケージをとして宣言し、org.jake
私のおそらく見えないメソッドを使用するのを防ぐにはどうすればよいですか?
言い換えれば、これを防ぐために私ができることはありますか?
java - android.widget パッケージの package-private フィールドにアクセスできないのはなぜですか?
Android View クラスをオーバーライドして、機能を少し調整しようとしています。しかし、setter メソッドを持たないフィールドを変更する必要があります。サブクラスを というパッケージに配置しましたandroid.widget
。package-private メンバー フィールドにアクセスできないのはなぜですか? コンパイラーは、アクセスできないのではなく、「解決できません」と言っていることに気付きました。これは Android.jar のビルド方法と関係がありますか?
c# - C# にパッケージ プライベートがないのはなぜですか?
私は C# を学んでおり、Java の世界から来ました。C# には「パッケージ プライベート」がないことに少し戸惑いました。これに関して私が見たほとんどのコメントは、「あなたにはできない。言語はこのように設計されていない」というものです。また、これらの回避策が言語の設計に反するというコメントとともに、internal
いくつかの回避策も見ました。partial
C# がこのように設計されたのはなぜですか? また、次のようなことを行うにはどうすればよいですか:Product
クラスとProductInstance
クラスがあります。を作成する唯一の方法は、クラスProductInstance
のファクトリ メソッドを使用することです。Java では、と同じパッケージをProduct
入れますが、そのコンストラクターを作成して、そのパッケージにのみアクセスできるようにします。このように、 を作成したい人は、クラスのファクトリ メソッドを介してのみ作成できます。C# で同じことを達成するにはどうすればよいですか?ProductInstance
Product
package private
Product
ProductInstance
Product
java - メソッドシグネチャでパッケージプライベートタイプを公に宣言する
これはJavaで可能です。
getY()
では、Javaコンパイラがメソッドを次のように宣言できる理由は何public
ですか?私を悩ませているのは、クラスY
はパッケージプライベートですが、アクセサーgetY()
はメソッドシグネチャでそれを宣言しているということです。しかし、パッケージの外では、メソッドの結果を以下x
に割り当てることしかできません。Object
わかった。これで、どういうわけか、これがメソッド結果の共分散で説明できる例を作成することができます。しかし、事態をさらに悪化させるために、私はこれを行うこともできます:
今ではパッケージgetY(Y result)
の外から電話をかけることはできませんでした。x
なぜ私はそれをすることができますか?コンパイラがメソッドを呼び出せない方法で宣言できるのはなぜですか?
java - 「パッケージ プライベート」メンバー アクセスは、デフォルト (修飾子なし) アクセスと同義ではありませんか?
一部のドキュメントで使用されている「パッケージ プライベート」という用語と、「デフォルト アクセス」の使用法について、私は少し混乱しています。package-private と default アクセスはどちらも protected と同義ではありませんか?
java - Javaのパッケージプライベートクラスの長所と短所?
package-private
私は最近 Java を学んでいて、何も指定しない場合のデフォルトであるクラスの概念に出くわしました。しかし、私は気づいた:
package-private クラスの使用はめったに見ません。これには理由がありますか。たとえば、深刻な欠点がある、冗長である、または単に十分に読んでいないなどです。その使用法に賛成/反対する強力な議論はありますか?
ほとんどの場合、それが本当に役に立たないのなら、なぜそれがデフォルトなのですか?
現実世界で package-private を使用する必要があるのはどのような状況ですか? つまり、いつかけがえのないものになるのでしょうか。
つまり、デフォルトの package-private 修飾子の主な長所と短所は何ですか?
java - 列挙型がパッケージプライベートコンストラクターを持つことができるのはなぜですか?
列挙型コンストラクターはその定数によってのみ呼び出すことができるのに、なぜパッケージプライベートにすることが許可されるのですか?
java - パッケージプライベートの可視性セマンティクスがJava言語に導入されたのは何年ですか?
同様の質問に答える最良の方法は何ですか?
(Javaに導入された機能XXXは何年ですか?)
Javaのバージョン履歴に関するwikiを読みましたが、粗すぎます。
ありがとう!
java - Javaで2つのパッケージ間でパッケージのプライベートデータを共有するには?
私は2つのJavaパッケージAとBを持っています.パッケージBのいくつかのクラスがパッケージAのいくつかのクラスを使用したいとしましょう.しかし、開発者が来てパッケージC(または、アプリケーションC)を開発すると、彼/彼女は私のパッケージ Bを使用しますが、B が使用している A のクラスを彼/彼女に使用させたくありません。つまり、パッケージ A のクラスをパッケージ プライベートにして、アプリケーション開発者から隠されるようにしたいということです。ただし、私自身のパッケージ B がパッケージ プライベートであるクラスにアクセスできるようにしたいと考えています。これは Java で実行できますか? 基本的に、弾丸を噛んでクラスを公開し、ユーザーがそれらを使用しようとしないことを願うだけですか? または、A にあるクラスを B の中に複製する必要がありますか?
私の好みは、ハックではないものです (つまり、リフレクションを使用したくない)。ヘルプ?
java - パッケージプライベートクラスを静的メソッドに渡す方法はありますか
パッケージのプライベートクラスをパラメータとして受け取る別のパッケージから静的メソッドを呼び出す方法があるかどうか疑問に思っていますか?MessagePackagePrivateクラスを別の.javaファイルに移動して公開する唯一の方法はそれですか?そうしないと、このエラーが発生します:「MessagePackagePrivateタイプが表示されません」これは正常です。
つまり、クラスが静的メソッドを公開して公開していても、同じパッケージで呼び出されていない場合、そのクラスは使用できません。
コードスニペットは次のとおりです。
MainClass.java
ClassB.java