問題タブ [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 投票する
4 に答える
3906 参照

java - パッケージプライベートメソッドにアクセスする外部クラス

パッケージにクラスがあり、org.jakeデフォルトのアクセス権(修飾子なし)を持つメソッドがあるとします。その場合、メソッドはパッケージ内にのみ表示されます。

しかし、誰かが私のフレームワークのjarを受け取ったとき、彼らが新しいクラスを作成し、そのパッケージをとして宣言し、org.jake私の​​おそらく見えないメソッドを使用するのを防ぐにはどうすればよいですか?

言い換えれば、これを防ぐために私ができることはありますか?

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

java - android.widget パッケージの package-private フィールドにアクセスできないのはなぜですか?

Android View クラスをオーバーライドして、機能を少し調整しようとしています。しかし、setter メソッドを持たないフィールドを変更する必要があります。サブクラスを というパッケージに配置しましたandroid.widget。package-private メンバー フィールドにアクセスできないのはなぜですか? コンパイラーは、アクセスできないのではなく、「解決できません」と言っていることに気付きました。これは Android.jar のビルド方法と関係がありますか?

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

c# - C# にパッケージ プライベートがないのはなぜですか?

私は C# を学んでおり、Java の世界から来ました。C# には「パッケージ プライベート」がないことに少し戸惑いました。これに関して私が見たほとんどのコメントは、「あなたにはできない。言語はこのように設計されていない」というものです。また、これらの回避策が言語の設計に反するというコメントとともに、internalいくつかの回避策も見ました。partial

C# がこのように設計されたのはなぜですか? また、次のようなことを行うにはどうすればよいですか:ProductクラスとProductInstanceクラスがあります。を作成する唯一の方法は、クラスProductInstanceのファクトリ メソッドを使用することです。Java では、と同じパッケージをProduct入れますが、そのコンストラクターを作成して、そのパッケージにのみアクセスできるようにします。このように、 を作成したい人は、クラスのファクトリ メソッドを介してのみ作成できます。C# で同じことを達成するにはどうすればよいですか?ProductInstanceProductpackage privateProductProductInstanceProduct

0 投票する
5 に答える
2665 参照

java - メソッドシグネチャでパッケージプライベートタイプを公に宣言する

これはJavaで可能です。

getY()では、Javaコンパイラがメソッドを次のように宣言できる理由は何publicですか?私を悩ませているのは、クラスYはパッケージプライベートですが、アクセサーgetY()はメソッドシグネチャでそれを宣言しているということです。しかし、パッケージの外では、メソッドの結果を以下xに割り当てることしかできません。Object

わかった。これで、どういうわけか、これがメソッド結果の共分散で説明できる例を作成することができます。しかし、事態をさらに悪化させるために、私はこれを行うこともできます:

今ではパッケージgetY(Y result)の外から電話をかけることはできませんでした。xなぜ私はそれをすることができますか?コンパイラがメソッドを呼び出せない方法で宣言できるのはなぜですか?

0 投票する
7 に答える
76175 参照

java - 「パッケージ プライベート」メンバー アクセスは、デフォルト (修飾子なし) アクセスと同義ではありませんか?

一部のドキュメントで使用されている「パッケージ プライベート」という用語と、「デフォルト アクセス」の使用法について、私は少し混乱しています。package-private と default アクセスはどちらも protected と同義ではありませんか?

0 投票する
8 に答える
40237 参照

java - Javaのパッケージプライベートクラスの長所と短所?

package-private私は最近 Java を学んでいて、何も指定しない場合のデフォルトであるクラスの概念に出くわしました。しかし、私は気づいた:

  1. package-private クラスの使用はめったに見ません。これには理由がありますか。たとえば、深刻な欠点がある、冗長である、または単に十分に読んでいないなどです。その使用法に賛成/反対する強力な議論はありますか?

  2. ほとんどの場合、それが本当に役に立たないのなら、なぜそれがデフォルトなのですか?

  3. 現実世界で package-private を使用する必要があるのはどのような状況ですか? つまり、いつかけがえのないものになるのでしょうか。

つまり、デフォルトの package-private 修飾子の主な長所と短所は何ですか?

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

java - 列挙型がパッケージプライベートコンストラクターを持つことができるのはなぜですか?

列挙型コンストラクターはその定数によってのみ呼び出すことができるのに、なぜパッケージプライベートにすることが許可されるのですか?

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

java - パッケージプライベートの可視性セマンティクスがJava言語に導入されたのは何年ですか?

同様の質問に答える最良の方法は何ですか?

(Javaに導入された機能XXXは何年ですか?)

Javaのバージョン履歴に関するwikiを読みましたが、粗すぎます。

ありがとう!

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

java - Javaで2つのパッケージ間でパッケージのプライベートデータを共有するには?

私は2つのJavaパッケージAとBを持っています.パッケージBのいくつかのクラスがパッケージAのいくつかのクラスを使用したいとしましょう.しかし、開発者が来てパッケージC(または、アプリケーションC)を開発すると、彼/彼女は私のパッケージ Bを使用しますが、B が使用している A のクラスを彼/彼女に使用させたくありません。つまり、パッケージ A のクラスをパッケージ プライベートにして、アプリケーション開発者から隠されるようにしたいということです。ただし、私自身のパッケージ B がパッケージ プライベートであるクラスにアクセスできるようにしたいと考えています。これは Java で実行できますか? 基本的に、弾丸を噛んでクラスを公開し、ユーザーがそれらを使用しようとしないことを願うだけですか? または、A にあるクラスを B の中に複製する必要がありますか?

私の好みは、ハックではないものです (つまり、リフレクションを使用したくない)。ヘルプ?

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

java - パッケージプライベートクラスを静的メソッドに渡す方法はありますか

パッケージのプライベートクラスをパラメータとして受け取る別のパッケージから静的メソッドを呼び出す方法があるかどうか疑問に思っていますか?MessagePackagePrivateクラスを別の.javaファイルに移動して公開する唯一の方法はそれですか?そうしないと、このエラーが発生します:「MessagePackagePrivateタイプが表示されません」これは正常です。

つまり、クラスが静的メソッドを公開して公開していても、同じパッケージで呼び出されていない場合、そのクラスは使用できません。

コードスニペットは次のとおりです。

MainClass.java

ClassB.java