問題タブ [interface]
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 - クラスの拡張インターフェースの決定
インターフェイスを表すClassオブジェクトが別のインターフェイスを拡張するかどうかを判断する必要があります。
仕様によると、 Class.getSuperClass()はインターフェイスに対してnullを返します。
このクラスがObjectクラス、インターフェイス、プリミティブ型、またはvoidのいずれかを表す場合、nullが返されます。
したがって、以下は機能しません。
何か案は?
oop - インターフェイスを把握できないように見えるのはなぜですか?
誰かが私のためにインターフェイスをわかりやすく説明してくれますか、またはいくつかの良い例を教えてくれますか? あちこちでインターフェイスのポップアップが表示され続けていますが、インターフェイスの適切な説明や、それらをいつ使用するかについて実際に触れたことはありません。
インターフェイス対抽象クラスのコンテキストでインターフェイスについて話しています。
oop - 不適切な OO 設計の問題 - Java の一般的な機能が必要ですが、実装方法がわかりません
私は Java で小さな UML クラス エディターを開発していますが、主に個人的なプロジェクトです。プロジェクトを作成する時間があれば、SourceForge で終了する可能性があります。
このプロジェクトは非常に高度です。クラスの作成、移動、インターフェイスの作成、リンクの作成などを行うことができます。
私が取り組んでいるのは、クラス/インターフェースのプロパティを設定し、新しいクラス/インターフェースを作成するためのダイアログ ボックスです。
たとえば、JDialog を拡張するクラスがあります。これは、クラスとインターフェイスを編集するためのメインの「ウィンドウ」です (まあ、それぞれにクラスがあります)。これには、JPanels を含む JTabbedPane が含まれます。
この JPanel は実際にはカスタムのものです。JPanel を拡張する抽象クラスを作成しました。このクラスはコンポーネント (そのサブクラスによって定義される) を使用し、それらの値を JTable (JPanel にも含まれる) に追加します。
たとえば、クラスの属性を編集する場合、JPanel には、属性の名前を入力するための JTextField と、そのタイプを入力するための別の JTextField が含まれます。これらのフィールドに入力されたデータを処理するための一連のボタンもあります。「保存」をクリックすると、JTextFields に入力したデータが JTable に追加されます (Enterprise Architect 風)。抽象クラスを拡張する具体化されたクラスは、制御を定義し、行が JTable に追加または削除されたときにデータをどう処理するかを決定します。ただし、JTable の管理は抽象クラスの責任です。
これが私の問題です。オブジェクト指向では、クラスにはメソッドがあり、インターフェースにもメソッドがあります。クラスまたはインターフェイスのメソッドを格納するために、同じ具体的なカスタム JPanel (AttributesPanel (作成した抽象 JPanel クラスを拡張する)) を使用できると自分に言い聞かせました。
ただし、クラスは、作業中のクラスまたはインターフェイスのコピーを (属性として) 保持する必要があります。そうすれば、メソッドが追加されたときに、editedClass.addMethod() (またはeditedInterface.addMethod()) を呼び出すことができます。問題は、クラスまたはインターフェイスのどちらで作業しているかを判断する方法がないことです。
私が見つけた解決策は醜いです.AttributesPanelクラスに属性editClassと属性editInterfaceを保持してください。クラスまたはインターフェイスのどちらを編集しているかに応じて、これらの属性の 1 つが null になり、他の属性は null になりません。
あなたが私に尋ねると、それはかなり醜いです。実際、地獄の第 9 サークルで燃えている (実際には凍っている) 間、私の頭の中でソフトウェア エンジニアリングの教師が苦痛に悲鳴を上げているのが聞こえます。
この設計上の問題を解決する簡単な方法は、"ObjectWithMethods" という名前のインターフェイスを作成することです。このインターフェイスは、Class および Interface クラスで実装されます。そうすれば、AttributesPanel クラスに ObjectWithMethods パラメーターを配置するだけで済みます。
しかし、それは「ObjectWithAttributes」または「ObjectWithBlahBlah」という名前のクラスを作成する必要があるということですか? ここに「TheDailyWTF」の良い可能性があると思います...その上、ドメイン オブジェクト (クラス、インターフェイス、ノート、リレーションシップ (UML エディター用)) を変更したり、新しいインターフェイスを作成したりする必要はないと思います。いくつかのUIの考慮事項....
どう思いますか?
もっと説明が必要です(私は今とても疲れていて、この心の状態では(特に英語で-私の母国語はフランス語です)かなりひどく正しい傾向があるため...)、聞いてください。これを編集します質問。
乾杯、
ギヨーム。
c# - C#でインターフェイスの実装を他のクラスに委任する方法
次のクラスを想定します。
MyEnumにIEnumeratorメソッドを実装する必要があります。しかし、IEnumeratorメソッドを実装する必要なしに、IEnumeratorの実装を直接_myListに「委任」またはリダイレクトすることは可能ですか?
java - インターフェイスに静的メソッドがないのに、静的フィールドと内部クラスは問題ないのはなぜですか? [Java8以前]
インターフェース内で静的メソッドを定義できない理由について、ここでいくつかの質問がありましたが、基本的な矛盾に対処するものはありません: インターフェース内で静的フィールドと静的内部型を定義できるのに、静的メソッドを定義できないのはなぜですか?
静的な内部型は、新しいクラスを生成する構文糖衣にすぎないため、おそらく公正な比較ではありませんが、なぜメソッドではなくフィールドなのですか?
インターフェース内の静的メソッドに対する議論は、JVM が使用する仮想テーブル解決戦略を壊すというものですが、それは静的フィールドにも同様に適用されるべきではありません。つまり、コンパイラはそれをインライン化できますか?
一貫性は私が望んでいるものであり、Java はインターフェース内でいかなる形式の静的もサポートしないか、一貫してそれらを許可する必要があります。
linq - インターフェイスとしてのLinq出力?
これが私がやろうとしているコードです:
OperatorはIOperatorを実装していますが、次のコンパイルエラーが発生します。
必要なものを取得するためにこれをキャストするにはどうすればよいですか?
java - Java の Runnable インターフェースと Callable インターフェースの違い
Runnable
Java で並行スレッドを設計する際にとCallable
インターフェースを使用することの違いは何ですか?
c# - C#インターフェイス。暗黙的な実装と明示的な実装
C#で暗黙的および明示的にインターフェイスを実装する際の違いは何ですか?
いつ暗黙的に使用する必要があり、いつ明示的に使用する必要がありますか?
どちらか一方に賛否両論はありますか?
Microsoftの公式ガイドライン(初版のフレームワーク設計ガイドラインから)では、コードに予期しない動作が発生するため、明示的な実装を使用することはお勧めしません。
このガイドラインは、IoC以前の時代、つまりインターフェースとして物事を渡さない場合に非常に有効だと思います。
誰かがその側面にも触れることができますか?
interface - タッチスクリーン用に書く際に考慮すべきことは?
私は、レンズのくさびと真円度を測定し、情報をデータベースに保存して報告する機械のインターフェースの開発を含む新しいプロジェクトを開始しています。マウスやキーボードが不要になるように、このマシンにタッチ スクリーンを搭載する可能性は十分にあります...
私はフルサイズのタッチスクリーン向けに開発した経験がないので、皆さんからのアドバイス/ヒント/情報を探しています...
要素を通常よりも少し大きくしたいのは想像できます...スペースボタンをもう少し出して....そのようなこと...誰か他に何か追加することはありますか?
oop - 実装者に関連するインターフェイスをどの名前空間に配置する必要がありますか?
具体的には、インターフェイスと実装者のペアを作成するときに、組織的な問題 (たとえば、s# アーキテクチャで推奨されているように、インターフェイスを別のアセンブリに配置する必要があるなど) が優先されない場合に、それらを構成する既定の方法はありますか?名前空間/命名スキーム?
これは明らかにより意見に基づく質問ですが、これについてもっと考えた人もいると思います。私たちは皆、彼らの結論から恩恵を受けることができます.