問題タブ [interface-implementation]
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 - ジェネリック ファクトリの実装
プラグ可能なインターフェイスのファクトリを設計しようとしています。ファクトリ インスタンスを取得すると、ファクトリはその特定の実装に適切なサブクラスを返すという考え方です。
この場合、サブクラスではなく文字列を使用して ID コードを表すサード パーティ ライブラリをラップしています。したがって、ライブラリをラップする実装では、すべての実装クラスにgetCode()
インターフェイス API で明示的に必要とされないメソッドがあります。enum
コードとインターフェイス クラス間のこのマッピングを格納するために を使用しています。
ほとんどの場合、このgetCode()
メソッドは必要ありません。ただし、実装パッケージのごく一部の状況で、そのメソッドにアクセスする必要があります。したがって、私の問題は、特定の Factory 実装への参照がある場合にメソッドが存在することを呼び出し元に伝える Factory 実装の署名を持たせたいことgetCode
です。
以下は、状況をsscceに消化するために最善を尽くした多くのコードです。非常に長いことは承知していますが、見た目よりも単純で、sscce の単語の 1 つに「完全」があります。
公開 API:
ユースケースの例:
実装の SSCCE バージョン:
列挙型コードマッパー:
実装パッケージ内のサンプル ユース ケース:
工場での試み:
これは、リターンが常に実装されることを指定するものではありませんICode
。しかし、渡されたインターフェイス クラスは を実装ICode
していません。それが要点です。
私は何をすべきか?
visual-studio-2010 - インターフェイス/抽象クラスを自動実装するときに、Visual Studio は FQN の代わりにインポートを追加できますか?
質問が示すように、型名の恐ろしい FQN の代わりに「using」ステートメントを追加するように VS 2010 Professional に指示するための何らかの設定 (存在する場合) を探しています。Resharper などを提案しないでください。組み込みのソリューションに興味があります。ありがとうございました。
c# - C# のパラメーターの 1 つとしてインターフェイスを持つメソッドを呼び出すにはどうすればよいですか?
次の方法があります(サードパーティのSDKメソッドがDLLに実装されています):
インターフェイス パラメータは次のとおりです。
このメソッドを関数から呼び出したい。このメソッドを呼び出すときに、オブジェクトを最初のパラメーターとして渡す方法を知っています。しかし、どうすれば 2 番目のパラメーター (インターフェース) を渡すことができますか。どんな助けでも大歓迎です。
c# - 共通インターフェイスを「継承」(実装) するインターフェイスを実装していますか?
4 つすべてを実行できるグランド タートルを作成したい場合はどうすればよいですか? 私はコーディングしたい:
これは可能ですか?今では、それぞれ 4 回実装する必要があるようFight()
ですEatPizza()
。しかし、これら 2 つの共通機能は解決され、一度実装するだけで済むと思いますよね?
を継承せずに 4 つの中間インターフェイスを作成してITurtle
から、GrandTurtle
実装することもできましたITurtle
。ITurtle
これにより、インターフェイスの継承の問題は解決されますが、5 番目の兄弟のように見えるため、意味的に間違っているように見えます。さらに、タートル固有のクラスを作成できるようにしたいと考えていますclass BostonLeonardo : ILeonardo
。
私は多くの場所から読みましたが、それは終わりのない議論のようです.「インターフェース内の継承」は完全に問題ないと言う人もいれば、そうではないという人もいます.どうして。
c# - 2 回実装されたインターフェイスは「型が統一される可能性があります」。なぜこの回避策が機能するのですか?
次のように、同じクラスに対してインターフェイスを 2 回実装しようとすると、コンパイラ エラーが発生しました。
エラー:
'Mapper' は 'IMapper' と 'IMapper' の両方を実装することはできません。これらは一部の型パラメーターの置換で統合される可能性があるためです。
この回避策が機能するのはなぜですか? 私は問題を解決したのか、それとも単にコンパイラを騙したのか疑問に思っています.
編集MyClass
: 、MyClassBase
、およびIMyInterface
をMapper
、MapperBase
、および に更新してIMapper
、この問題が発生する可能性があるより現実的なシナリオを表します。
java - パラメータとしてのオブジェクト?
以前、Java でサブクラスごとにクラスを実装することについて質問したことがありますが、別のアプローチが使用されていることがわかりました (私にとっては別の方法です!) URL:こちら
クラスがパラメーターとして渡されたため、この行は私にとって混乱を招きました。さて、ここで質問する前に、試して理解しようと思いました。これが私のコードです:
そして次のクラスではparameterObject
、パラメータとして渡すメソッドを使用しました(bjueJ環境で)
メソッドを呼び出すと、testFunction(...)
パラメーター値を要求され、入力し"arpan",19 and 20
ました。エラー:予想される..次にnull
、objectParameterに使用しようとすると、JVMがnullPointException
エラーをスローしました..何が起こるはずで、何が私の理解に欠けていますか? 助けてください。