プログラミング

プロおよび熱狂的プログラマーのためのQ&A

13
実行時に、基本クラスを拡張するJavaアプリケーション内のすべてのクラスを検索します
私はこのようなことをしたいです: List<Animal> animals = new ArrayList<Animal>(); for( Class c: list_of_all_classes_available_to_my_app() ) if (c is Animal) animals.add( new c() ); そのため、アプリケーションのユニバース内のすべてのクラスを確認し、Animalから派生したクラスを見つけたら、そのタイプの新しいオブジェクトを作成してリストに追加します。これにより、リストを更新しなくても機能を追加できます。以下を回避できます。 List<Animal> animals = new ArrayList<Animal>(); animals.add( new Dog() ); animals.add( new Cat() ); animals.add( new Donkey() ); ... 上記のアプローチでは、Animalを拡張する新しいクラスを作成するだけで、自動的に取得されます。 更新:2008/10/16太平洋標準時午前9:00: この質問により多くの素晴らしい回答が得られました。ありがとうございました。 回答と私の調査から、私が本当にやりたいことは、Javaでは不可能であることがわかりました。ddimitrovのServiceLoaderメカニズムなど、機能するアプローチはいくつかありますが、私が望むものには非常に重く、問題をJavaコードから外部構成ファイルに移すだけだと思います。 19年5月10日更新(11年後!)@IvanNikの回答に よると、これに役立つライブラリがいくつかありますorg.reflectionsは良さそうです。またClassGraph @Lukeハチソンさんからの答えは面白そうですね。答えにはさらにいくつかの可能性があります。 私が望むものを述べる別の方法:私のAnimalクラスの静的関数は、追加の構成/コーディングなしで、Animalから継承するすべてのクラスを見つけてインスタンス化します。構成する必要がある場合は、いずれにしても、Animalクラスでインスタンス化するだけで済みます。Javaプログラムは.classファイルの緩やかな連合なので、それがそのままの方法であることは理解しています。 興味深いことに、これはC#ではかなり簡単なようです。




6
JVMとHotSpotの違いは?
HotSpotとは具体的には何であり、JVMおよびOpenJDKとどのように関連していますか?ライブラリですか?正確には何をしますか? また、OpenJDKとHotSpotの違いは何ですか?
147 java  jvm-hotspot 


8
symlinkディレクトリー内のファイルを含む、ディレクトリー内のすべてのファイルを再帰的にリストします
私は、ディレクトリがあると/dir他のディレクトリに3つのシンボリックリンクがあり、その内部を /dir/dir11、/dir/dir12と/dir/dir13。私は、内のすべてのファイルを一覧表示したいdirにおけるものを含めてdir11、dir12とdir13。 より一般的にするために、シンボリックリンクであるディレクトリ内のファイルを含むすべてのファイルを一覧表示したいと思います。find .、ls -Rなどは、それらにナビゲートせずにシンボリックリンクで停止し、さらにリストします。
147 linux 

4
正規表現のオプション文字との一致方法
これまでは正常に動作していたと思っていた正規表現があります。オプションの文字で一致する必要があります。そこにある場合とない場合があります。 ここに2つの文字列があります。上の文字列は一致しますが、下の文字列は一致しません。下の文字列に単一の文字がないことは、それを失敗させています。 最初の5桁の数字がある場合はそれを取得し、ない場合は残りの文字列を取得します。この手紙はすることができますA-Z。 ([A-Z]{1}) +.*? +正規表現から削除すると、文字以外は必要なすべてに一致しますが、それは重要です。 20000 K Q511195DREWBT E00078748521 30000 K601220PLOPOH Z00054878524 これが私が使っている正規表現です。 /^([0-9]{5})+.*? ([A-Z]{1}) +.*? +([A-Z]{1})([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3}) +([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})/
147 regex  string  operators 

7
Django REST Framework:ModelSerializerにフィールドを追加する
モデルをシリアル化したいが、シリアル化するモデルインスタンスでいくつかのデータベースルックアップを実行する必要がある追加のフィールドを含めたい: class FooSerializer(serializers.ModelSerializer): my_field = ... # result of some database queries on the input Foo object class Meta: model = Foo fields = ('id', 'name', 'myfield') これを行う正しい方法は何ですか?余分な「コンテキスト」をシリアライザに渡すことができると思いますが、コンテキストディクショナリの追加フィールドを渡す正しい答えは何ですか。そのアプローチでは、必要なフィールドを取得するロジックはシリアライザ定義で自己完結することはなく、すべてのシリアル化されたインスタンスがを必要とするため理想的ですmy_field。他の場所でDRFシリアライザのドキュメントでそれは言う、「追加のフィールドは、モデル上の任意のプロパティまたは呼び出し可能に対応させることができます」。余分なフィールドは私が話していることですか?Fooのモデル定義でmy_field値を返す関数を定義し、シリアライザでmy_fieldをその呼び出し可能オブジェクトにフックする必要がありますか?それはどのように見えますか? よろしくお願いします。必要に応じて、質問を明確にします。


8
AndroidのImageButtonに画像を合わせる
私のアクティビティには6つのImageButtonがあり、コードを使用して画像を設定します(xmlは使用しません)。 ボタン領域の75%をカバーしてほしい。しかし、一部の画像がカバーする領域が少ないため、画像が大きすぎてimageButtonに収まりません。プログラムでサイズを変更して表示するにはどうすればよいですか?以下はスクリーンショットです 以下はxmlファイルです <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" > <LinearLayout android:layout_height="0dp" android:layout_width="match_parent" android:layout_weight="1" android:orientation="horizontal"> <ImageButton android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:id="@+id/button_topleft" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" /> <ImageButton android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:id="@+id/button_topright" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" /> </LinearLayout> <LinearLayout android:layout_height="0dp" android:layout_width="match_parent" android:layout_weight="1" android:orientation="horizontal"> <ImageButton android:layout_height="match_parent" android:layout_width="0dp" …

7
Djangoテンプレート内のコレクションのサイズを確認するにはどうすればよいですか?
Djangoテンプレートにリストがあります。リストのサイズがゼロより大きい場合にのみ、何かをしたいのですが。 私が試してみましたmyList|lengthし、myList|length_is彼らは成功していません。 あちこち検索しましたが、例はありません。これを確認するにはどうすればよいですか?


9
<の違いは何ですか?スーパーE>と<?E>?
違いは何である&lt;? super E&gt;とは&lt;? extends E&gt;? たとえば、クラスを見るjava.util.concurrent.LinkedBlockingQueueと、コンストラクタに次のシグネチャがあります。 public LinkedBlockingQueue(Collection&lt;? extends E&gt; c) そしてメソッドのために: public int drainTo(Collection&lt;? super E&gt; c)
147 java  generics 

14
ツール:Androidマニフェストで置換せずに置換
多くの異なるライブラリ依存関係を持つgradleプロジェクトを使用しており、新しいマニフェストマージを使用しています。私の&lt;application /&gt;タグではそれをそのように設定しています: &lt;application tools:replace="android:icon, android:label, android:theme, android:name" android:name="com.example.myapp.MyApplcation" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/application_name" android:logo="@drawable/logo_ab" android:theme="@style/AppTheme" &gt; .... &lt;/application&gt; それでも私はエラーを受け取っています: /android/MyApp/app/src/main/AndroidManifest.xml:29:9 Error: Attribute application@icon value=(@drawable/ic_launcher) from AndroidManifest.xml:29:9 is also present at {Library Name} value=(@drawable/app_icon) Suggestion: add 'tools:replace="android:icon"' to &lt;application&gt; element at AndroidManifest.xml:26:5 to override /android/MyApp/app/src/main/AndroidManifest.xml:30:9 Error: Attribute application@label value=(@string/application_name) from AndroidManifest.xml:30:9 is also …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.