問題タブ [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.

0 投票する
10 に答える
28864 参照

java - Java クラスのインターフェースを優先する必要があるのはなぜですか?

PMDは、次の違反を報告します。

違反は、「'ArrayList' のような実装型を使用しないでください。代わりにインターフェイスを使用してください」でした。

次の行は違反を修正します。

Listの代わりに後者を使用する必要があるのはなぜArrayListですか?

0 投票する
9 に答える
10886 参照

java - Java の静的メソッドの代替

私が書いている Java プログラム用のミニ ORM を作成しています... データベース内の各テーブルのクラスがあり、すべて から継承していModelBaseます。

ModelBase抽象的であり、データベースからオブジェクトを見つけてバインドするための一連の静的メソッドを提供します。次に例を示します。

ModelBase.findAll(Albums.class)したがって、保存されているすべてのアルバムのリストを取得するなどのことができます。私の問題は、この静的コンテキストでは、具象クラス Album から適切な SQL 文字列を取得する必要があることです。次のような静的メソッドを持つことはできません

Java には静的メソッドのポリモーフィズムがないためです。getSelectSQL()しかし、インスタンス メソッドを作成したくありませんAlbum。実際に動作が静的な文字列を取得するためだけにインスタンスを作成する必要があるからです。

現時点でfindAll()は、リフレクションを使用して、問題のクラスに適切な sql を取得します。

しかし、それはかなりひどいです。

アイデアはありますか?これは、私が何度も何度も経験している一般的な問題です。クラスまたはインターフェイスで抽象静的メソッドを指定できないことです。静的メソッドのポリモーフィズムが機能しない、または機能しない理由はわかっていますが、それでももう一度使用したくなるわけではありません。

具象サブクラス X および Y がクラス メソッド (またはそれが失敗すると、クラス定数!) を実装することを保証できるパターン/構造はありますか?

0 投票する
15 に答える
5383 参照

java - インターフェイスに対するプログラミング: すべてのドメイン クラスのインターフェイスを作成しますか?

インターフェイスに対するプログラミングは良い習慣であることに同意します。ほとんどの場合、この意味での Java の「インターフェース」は言語構成インターフェースを意味するため、インターフェースと実装クラスを作成し、ほとんどの場合、実装クラスの代わりにインターフェースを使用します。

これは、ドメイン モデルを作成するための良い方法でもあるのではないでしょうか。たとえば、ドメイン クラス Customer があり、各顧客が Orders のリストを持っている場合、通常はインターフェイス ICustomer および IOrder も記述します。また、Customer は Orders の代わりに IOrders のリストを持っていますか? それとも、ドメイン モデルでインターフェイスを使用するのは、それが実際にドメインによって駆動される場合のみです。たとえば、少なくとも 2 つの異なる種類の注文がある場合などです。言い換えれば、ドメイン モデルの技術的な必要性のためだけにインターフェースを使用しますか、それとも実際のドメインに関して本当に適切な場合にのみインターフェースを使用しますか?

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

c# - 静的メソッドでモックする方法は?

私はモックオブジェクトを初めて使用しますが、モックを作成するには、クラスにインターフェイスを実装させる必要があることを理解しています。

私が抱えている問題は、データアクセス層に静的メソッドが必要なのに、インターフェイスに静的メソッドを配置できないことです。

これを回避する最善の方法は何ですか?インスタンスメソッドを使用する必要がありますか(これは間違っているようです)、それとも別の解決策がありますか?

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

html - HTML 入力に対する理想的なユーザー フィードバック

正直に言って、標準に準拠した適切な HTML を作成するのは非常に困難です。セマンティックな HTML を書くのはなおさらですが、コンピューターがそれを理解することは不可能だと思います。

では、HTML を入力したユーザーにとって「理想的な」フィードバックとはどのようなものでしょうか? エラーと対応する行番号と列の W3C バリデーター スタイルのリストでしょうか? 強調表示された行、エラーの説明、および可能な修正の注釈付きコード表示でしょうか? 各エラーを個別に処理するスペルチェック スタイル モードですか? エラー情報をまったく提供しないでしょう?また、ユーザーに伝えるのに適したエラーの種類は何ですか? (エラーのいくつかの広範なクラスには、解析エラー、ネスト エラー (つまり、ab タグに div を入れる)、および整形式エラーが含まれます。)

  • Scottm:良い点です。すべてのエラーを一覧表示する W3C の方法も気に入りませんでした。ただし、ユーザーが問題のある HTML を適切に編集できるようにするという問題がまだ残っています。
  • onebyone: わかりました。いくつかのスクリーンショットを見ると、HTML Validator には W3C エラー リストがあるように見えますが、関連するソース セグメントと展開されたエラー情報に直接移動する機能と、それらを行う必要がないという事実が組み合わされています。スクロールして、あるセクションから別のセクションにジャンプします。かなり良さそうに見えますが、普通のジョーでも使えますか?

編集 1:明確化として、これはインターフェイスに関するものであり、必ずしも基になる実装ではありません。ただし、インターフェイスはプレーンな HTML と JavaScript で実行可能である必要があります (HTML のみが必要な場合は使いやすさのポイントが 2 倍になりますが、その場合は W3C で行き詰まると思います)。

0 投票する
10 に答える
695 参照

java - インターフェイスに関する質問

インターフェイス MyInterface と、MyInterface を実装する 2 つのクラス A、B があるとします。、および の
2 つのオブジェクトを宣言しました。 関数に渡そうとすると、関数にエラーが発生します。MyInterface a = new A()MyInterface b = new B()
doSomething(A a){}

これは私のコードです:

私の問題は、あらゆる種類のクラスになる可能性のあるコンポーネントインターフェイスから取得していて、各クラスの関数を作成する必要があることです。
したがって、1 つの方法は、インターフェイスを取得し、それがどのタイプであるかを確認することです。(A のインスタンス)

他の人がこの問題にどのように対処しているか知りたいです??

どうも

0 投票する
12 に答える
118445 参照

java - Java インターフェイスのメソッドは、パブリック アクセス修飾子を使用して宣言する必要がありますか?

publicアクセス修飾子を使用して、または使用せずに、Java インターフェイスのメソッドを宣言する必要がありますか?

もちろん、技術的には問題ありません。interfaceis alwaysを実装するクラスメソッドpublic。しかし、より良いコンベンションは何ですか?

Java 自体はこれに一貫性がありません。たとえば、 Collectionvs. Comparable、またはFuturevs.を参照してくださいScriptEngine

0 投票する
4 に答える
298 参照

delphi - これら 2 つのコード セットの違いは何ですか

これら2つのコードの違いは何ですか

そして以下:

それらがまったく同じである場合、どちらにも利点や読みやすさの問題はありますか。

2 番目は、IInterface1 を実装せずに IInterface2 を実装するクラスを作成できないことを意味すると思いますが、最初のクラスでは可能です。

0 投票する
4 に答える
876 参照

delphi - インターフェイス「再帰」と参照カウント

インターフェイスに小さな問題があります。ここに擬似コードがあります:

誰でも欠陥を見ることができますか?子がその親への参照を持つ必要がありますが、この状況では参照カウントが機能しません。ParentClass インスタンスを作成して子を追加すると、親クラスは解放されません。理由がわかります。どうすればそれを回避できますか?

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

java - Ruby とダックタイピング: 契約による設計は不可能?

Java のメソッド署名:

ルビーの同様のもの

Java の場合、型システムは、メソッドが何を期待し、何を提供するかについての情報を与えてくれます。Ruby の場合、何を渡すべきなのか、何を受け取ることになるのか、まったくわかりません。

Java では、オブジェクトは正式にインターフェースを実装する必要があります。Ruby では、渡されるオブジェクトは、ここで定義されたメソッドで呼び出されたメソッドに応答する必要があります。

これは非常に問題があるようです:

  1. 100% 正確で最新のドキュメントがあっても、Ruby コードは本質的にその実装を公開し、カプセル化を破る必要があります。「OO の純度」はさておき、これはメンテナンスの悪夢のようです。
  2. Ruby コードからは、何が返されているのかわかりません。基本的に実験するか、コードを読んで、返されたオブジェクトがどのメソッドに応答するかを調べる必要があります。

静的型付けとダック型付けについて議論するのではなく、契約によって設計する能力がほとんどない生産システムをどのように維持するかを理解しようとしています。

アップデート

このアプローチが必要とするドキュメントを介して、メソッドの内部実装の公開に実際に対処した人は誰もいません。インターフェースがないので、特定の型を想定していない場合、呼び出す可能性のあるすべてのメソッドを箇条書きにして、呼び出し元が何を渡すことができるかを知る必要はありませんか? それとも、これは実際には発生しない単なるエッジ ケースですか?