問題タブ [getter]
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 - クラスメソッドでクラス属性にアクセスするための良い方法は何ですか?
Java でクラス メソッドからクラス属性にアクセスする最良の方法について、私はいつも疑問に思っています。
以下の 3 つのソリューション (またはまったく別のソリューション:P) のどれが適切な方法であるかについて、すぐに納得していただけますか?
java - フィールドアクセスを getter / setter メソッドアクセスに変更
Java の外部クラス フィールド アクセスを getter/setter 呼び出しに自動的に変更し、公開されたフィールドを非表示にすることは可能ですか? 私は Javabeans を使用しており、フィールド プロパティが変更されたときに変更通知が必要です (これは重要です)。
PropertyChangeSupport フィールドにプロパティ変更呼び出しを自動的に挿入できるcglibを見つけました。Project Lombokについては知っていますが、これはソースコードを変更しているように見え、さらにフィールドアクセスの変更をサポートしていません。おそらく Lombok に変更を加えることで、これがサポートされる可能性がありますか、それとも他の解決策がありますか?
よろしくお願いします、クリス
objective-c - セッターを介してクラスを初期化できないのはなぜですか?
Tires というカスタム クラスがある場合:
そして、View Controller でセッターとゲッターを合成します。
[self setFrontLeft :[[Tires alloc] init]]が戻ってきた後に終了します。それは問題なくコンパイルされ、デバッガーを実行すると、実際にはTiresのinitメソッドを完全に通過しますが、戻ってくると、ただ死んでビューが表示されません。ただし、viewDidLoadメソッドを次のように変更すると:
それはうまく動作します。セッターを捨てて直接frontLeft変数にアクセスすることもできましたが、可能な限りセッターとゲッターを使用する必要があるという印象を受けました。論理的にはsetFrontLeftメソッドが機能するようです。
これは、私の同僚がこれらの点で尋ね続けている追加の質問をもたらします (私たちは皆、Objective-C を初めて使用します)。それらのセッターとゲッターと同じクラスにいる場合、なぜセッターとゲッターを使用するのですか。
c# - プロパティを内部で使用する利点は何ですか?
クラスの外部からメンバーにアクセスする場合、カプセル化は明らかに有用で不可欠ですが、クラス変数を内部で参照する場合は、プライベートメンバーを呼び出すか、ゲッターを使用する方がよいでしょうか。ゲッターが単に変数を返す場合、パフォーマンスの違いはありますか?
properties - Getter と Setter がすべきこととすべきでないこと
重複の可能性:
規則に関する質問: プロパティを使用するのではなく、いつ Getter/Setter 関数を使用しますか?
最近、ゲッターとセッターについて多くの異なる意見に出くわしたので、それを独自の質問にする必要があると考えました。
私の以前の質問は、セッターに副作用があってはならず、SetProperty
メソッドがより良い選択であると述べたコメント (後で削除されました) をすぐに受け取りました。
確かに、これはMicrosoft の意見でもあるようです。Resized
ただし、フォームWidth
やHeight
プロパティが設定されたときなど、それらのプロパティによってイベントが発生することがよくあります。OwenPはまた、「プロパティに例外をスローさせてはならない、プロパティに副作用があってはならない、順序は重要ではなく、プロパティは比較的迅速に返されるべきである」とも述べています。
しかし、Michael Stumは、setter 内でデータを検証する際に例外をスローする必要があると述べています。セッターが例外をスローしない場合、この質問に対する多くの回答が示唆するように、データを効果的に検証するにはどうすればよいでしょうか?
Microsoft のほぼすべての Control が行うように、イベントを発生させる必要がある場合はどうでしょうか? それなら、あなたのイベントに登録した人に翻弄されていませんか? ハンドラーが大量の情報を実行したり、エラーをスローしたりした場合、セッターはどうなりますか?
最後に、getter 内の遅延読み込みについてはどうでしょうか。これも以前のガイドラインに違反する可能性があります。
何を getter または setter に入れることが許容され、何をアクセサ メソッドのみに保持する必要がありますか?
編集:
MSDN の別の記事から:
およびメソッドは、通常、他のメソッドと同じです
get
。set
これらは、任意のプログラム ロジックを実行し、例外をスローし、オーバーライドし、プログラミング言語で許可されている任意の修飾子で宣言することができます。ただし、プロパティは静的にすることもできることに注意してください。プロパティが静的である場合、メソッドget
とset
メソッドで実行できることには制限があります。詳細については、プログラミング言語リファレンスを参照してください。
c# - C# - 継承されたすべてのクラスが基本クラスからの getter を必要とするが、setter は 1 つの継承されたクラスに対してのみ必要な場合はどうすればよいですか?
WizardViewModelBase という抽象クラスがあります。
私の WizardXXXViewModel クラスはすべて基本抽象クラスから継承しています。
ベースにはゲッターを持つプロパティがあります。すべてのサブクラスはその文字列を必要とし、オーバーライドします
プロパティを ViewModel の DisplayName として使用します。
設定する必要があるため、WizardTimeTableWeekViewModel と呼ばれる 1 つの ViewModel だけがセッターを必要とします。
ViewModel が週 A または週 B のタイムテーブルであるかどうか。次のような 2 つの ViewModel を使用する
WizardTimeTableWeekAViewModel と WizardTimeTableWeekBViewModel は冗長です。
セッターは必要ないため、他のすべてのクラスでセッターをオーバーライドしたくありません。
セッターをオーバーライドする必要がないことをサブクラスに伝えることはできますか?
または他の提案はありますか?
インターフェイスを使用すると、ゲッターまたはセッターを自由に使用できますが、空のセッターが多数あります
プロパティは私にとってオプションではありません。
面白い..私が最初に言ったことに反して、WizardPages のすべての DisplayNames を本当に設定する必要がある場合はどうなるか考えました。おそらく、ローカリゼーションのために getter で文字列をハードコーディングしてリソース ファイルに文字列を配置するべきではなく、すべてのサブクラス XD のどこかに setter が必要です。
java - Javafor-各オンゲッター
javacが私が思うことを実行した場合、次の行で同じパフォーマンスが得られます。
そうですか?それとも、おそらく実装固有ですか?もしそうなら:GWTについて知っている人はいますか?
c++ - パブリックデータメンバーとゲッター、セッター
私は現在Qtで働いているのでC++です。プライベートデータメンバーとパブリックメンバー関数を持つクラスがあります。クラスで利用可能なデータメンバー用の公開ゲッターとセッターがあります。
ここで私の質問は、クラスにデータメンバーのゲッターとセッターがある場合、それらのデータメンバーをプライベートにすることのポイントは何ですか?基本クラスにプライベートデータメンバーを含めることは論理的に聞こえることに同意します。しかし、それ以外に、プライベートメンバーがいること、そして彼らのゲッターやセッターがいることは、私にとって論理的なものではないようです。
または、代わりに、すべての変数をパブリックにして、ゲッターとセッターをまったく必要としないようにすることはできますか?それらを持っているのは良い習慣ですか?プライベートメンバーを使用するとデータの抽象化が確実になりますが、ゲッターとセッターを使用すると、実際にはこれらの変数に非常に簡単にアクセスできます。これに関するポインタは大歓迎です。
c++ - クラス固有の属性または外部構造体の C++ 仮想メソッド
すべて共通の基本クラスから派生した一連のクラスがあります。これらのクラスを多態的に使用したい。インターフェイスは、戻り値が特定の派生クラス全体で一定であるが、派生クラスごとに異なる getter メソッドのセットを定義します。例えば:
等
これは物事を行う一般的な方法ですか?パフォーマンスが重要な考慮事項である場合、属性を外部構造に引き出したほうがよいでしょうか。たとえば、次のようになります。
各インスタンスにa を格納し、次のようVals*
に書き換えBase
ますか?
追加の逆参照は、本質的に vtable ルックアップと同じですか? この種の状況の確立されたイディオムは何ですか? これらのソリューションは両方ともばかげていますか? どんな洞察も大歓迎です
javascript - ECMAScript 5 を使用してデフォルトのゲッターとセッターを定義するにはどうすればよいですか?
プロトタイプのデフォルトのゲッターを指定するにはどうすればよいですか? デフォルトのゲッターとは、呼び出された場合に呼び出される関数を意味しますobj.undefinedProperty123
。
Object.prototype.get = function(property) {..} を試してみましたが、この場合は呼び出されません。