問題タブ [abstract-methods]
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 抽象メソッドによるコードの重複の回避
かなり多数のサブクラス(車、自転車など)を持つクラス(乗り物としましょう)があります。すべてのサブクラスには、サブクラスのタイプ (タイヤの数など) に関する特定の情報が格納されます。
このすべての情報が (コンパイル時に) 既に適用されていることを確認したいと思います。したがって、サブクラスのコンストラクターでこのデータを指定したくありません (それらのいくつかを設定するのを忘れる可能性があるため)。この情報を Vehicle のコンストラクターに入れることもできますが、これらのパラメーターが多数あるため、コードがかなり乱雑になります。
完全に読み取り不能なコンストラクターになってしまいます。サブクラスに固有の情報であっても、インスタンスごとにこの情報を保存します。
別の方法は、抽象静的ゲッター/セッターを導入し、サブクラスに情報を保存することです。
これはかなりきれいに見え、インスタンスごとではなくサブクラスごとに情報を保存しますが、サブクラスには多くのコードの重複があります。現在、すべてのサブクラスには ~20 個のセッター/ゲッターが含まれていますが、実際の機能はほとんどありません。これを回避するきれいな方法はありますか?おそらくFactoryメソッドなどを使用していますか?
c# - 抽象メソッドを (部分的に) 実装し、それを実装するために派生クラスを必要とすることは可能ですか?
ここに私がやりたいことのプロトタイプがありますが、私が書いたようには機能しないことに気づいています:
ここで、派生クラスで必要な抽象メソッドの名前を変更することで、それが機能することに気付きました。
すべてのクラスで、メソッド名が同じ GetKeyForItem であることを望みます。それを機能させる方法はありますか?
c# - 定義 c# を持つ抽象に似たもの
そもそもこれは設計が悪いのかもしれませんが、私は抽象基底クラスを持っていて、それにはメソッドがありますvalidate
すべての派生クラスには検証が必要なプロパティがあることはわかっていますが、抽象メソッドごとstr1
に検証をコピーして貼り付ける必要はありません。str2
将来の開発者 (私自身を含む) が、validate メソッドを含めて入力することを忘れないようにしたいと思います。私が見たところ、抽象メソッドに定義を与えたり、仮想メソッドを強制的にオーバーライドしたりする方法はありません。
これに関して私がこれまでに聞いたのは、「開発者がやりたいことを選択できるようにするべきだ」ということだけです。それは私にとって十分ではありません。間違いを犯さないようにするための抑制と均衡に反します。彼らが積極的に実装コードを持たないことを選択してもかまいませんが、忘れると、後で派生フィールドが検証されないときに頭痛の種になります。
この問題に対する提案はありますか?
java - Proguard により、API が 19 未満のデバイスで RemoteController 互換実装がクラッシュする
API 19 で導入された RemoteController API を API 14+ で使用できるようにしようとしています。これまでのところすべてが機能するようになりましたが、残っている唯一の問題は、proguard が API 19 未満のデバイスでビルドを台無しにするようで、MicroService.java で RemoteMetadataProvider を初期化するたびに AbstractMethodError が発生することです。
MicroService.java: https://github.com/tomahawk-player/tomahawk-android/blob/master/src/org/tomahawk/tomahawk_android/services/MicroService.java
私の実装は DrBreen によるこのガイド/ライブラリに基づいています: http://forum.xda-developers.com/showthread.php?t=2432267
私が使用している WisdomWolf による統合ライブラリ: https://github.com/WisdomWolf/UnifiedRemoteMedadataProvider
私のプロガード設定ファイル: https://github.com/tomahawk-player/tomahawk-android/blob/master/proguard-android.txt
プロガードを完全に無効にすると、クラッシュすることなくすべてが正常に機能するため、プロガードが必要なクラス/インターフェースを何らかの形で取り除いていると推測しています。プロガードを適切に構成する方法についてのアイデアはありますか?
これまでの私の試み:
- 「-keep class org.electricwisdom.**」と「-keep class com.woodblockwithoutco.* *」をプロガード ファイルに追加します。これら 2 つは、API 14-18 の RemoteController API を実装する RemoteMetadataProvider ライブラリのパッケージ名であるためです。
- 「-keep * implements android.media.IRemoteControlDisplay」および/または「-keep * extends android.media.IRemoteControlDisplay$Stub」をプロガード ファイルに追加する
- 「-keep class android.media.IRemoteControlDisplay$**」を追加
java - Tomcat 7 の非互換バージョン、java.lang.abstractmethoderror のスロー
実際、アプリケーションを からTomcat 5
に移行していますTomcat 7.0.37
。java.lang.abstractmethoderror exception
サーバーを起動しているときに私に与えています。私はANT
自分のアプリケーションを構築するために使用しています。私は多くの投稿を読み、多くの解決策も試しましたが、うまくいきません。スタック トレースは次のとおりです。
ant が使用する build.xml ファイルは次のとおりです。
java - 抽象クラスにインターフェースからの抽象メソッドを含めることは、より良い形式と考えられますか?
インターフェイスから残された抽象メソッドの宣言はオプションであることは認識していますが、意味的にそれらを含める方が良い形式と見なされるかどうか疑問に思っています。
インターフェース:
抽象クラス:
java - 抽象メソッドの戻り値の型としての型付きリストは、オブジェクトのリストを返します - なぜですか?
私は混乱しています - 助けが必要です。私は抽象メソッドを持つ抽象クラスを持っています:
AbstractA 型のメソッド パラメータを宣言して getAll() を呼び出すと、IDE に正しい戻り値の型 ( List<String>
) が表示されます。
しかし、そのリストを繰り返し処理したい場合、各要素は String ではなく Object 型です。
そして、それはさらに良くなります:
ここで何が起こっているのかわかりません。Java 8 (アップデート 25) を使用しています。コンパイラが私のリストの反復を受け入れなかった理由を誰かに説明してもらえますか?
本当にありがとうございました。
よろしく、 ダニエル
java - 抽象メソッドのパラメーターとしてジェネリック EnumMap を使用する方法
抽象メソッドのパラメーターとしてジェネリック EnumMap を使用しようとしました。私の問題は、EnumMap の既存の列挙型を使用して抽象メソッドを実装すると、オーバーライド アノテーションを削除してスーパー メソッドを実装する必要があることをコンパイラが通知することです。
ここに私の抽象クラスがあります:
そして実装クラス:
多分私はばかげているかもしれませんが、何が間違っていますか?
誰でも私を助けることができますか?