異なるクラスに対して1つのインターフェイス実装を作成するにはどうすればよいですか?

イリヤ・タラソフ

異なるタイプのクラスに対して1つの実装を作成したいと思います。
これはinterface

public interface ResourcesInterface<T> {
  T readJsonContent(String fileName/*, maybe there also must be class type?*/);
}

これはのinterface実装ですStudent.class次の例では、JSONファイルを読み取ってStudent.classオブジェクトを受信しようとしています

import com.fasterxml.jackson.databind.ObjectMapper;

public class StudentResources implements ResourcesInterface<Student> {

  @Override
  public Student readJsonContent(String fileName) {
    Student student = new Student();
    ObjectMapper objectMapper = new ObjectMapper();

    try {
      URL path = getClass().getClassLoader().getResource(fileName);
      if (path == null) throw new NullPointerException();
      student = objectMapper.readValue(path, Student.class);

    } catch (IOException exception) {
      exception.printStackTrace();
    }

    return student;
  }
}

したがってinterfaceclassタイプごとにこれ実装する代わりに、readJsonContent(String)次のようなメソッドを使用したいと思います

Student student = readFromJson(fileName, Student.class);
AnotherObject object = readFromJson(fileName, AnotherObject.class);

どういうわけか1つの実装だけを書くことは可能ですか?interface異なるごとに複数回実装する代わりにclassこれを行う方法はありますか?

オクタヴィアンR。

私が正しく理解していれば、JSONファイルをオブジェクトにデコードできる汎用メソッドが必要ですか?もしそうなら、あなたはインターフェースを必要としません。必要なのは、次のような静的メソッドを使用してクラスを作成することです。

import org.codehaus.jackson.map.ObjectMapper;

import java.io.IOException;
import java.io.UncheckedIOException;
import java.net.URL;
import java.util.Objects;

public class JsonUtil  {

    private JsonUtil(){}

    public static <T> T readJsonContent(String fileName, Class<T> clazz) {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            URL path = Objects.requireNonNull(clazz.getResource(fileName));
            return objectMapper.readValue(path, clazz);
        } catch (IOException ex) {
            throw new UncheckedIOException("Json decoding error", ex);
        }
    }

    public static void main(String[] args) {
        Student s = JsonUtil.readJsonContent("", Student.class);
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

変更できないクラスを作成してインターフェイスを実装するにはどうすればよいですか?

分類Dev

クラスパスでインターフェースのすべての実装を見つけるにはどうすればよいですか?

分類Dev

インターフェイスの匿名実装を作成するにはどうすればよいですか?

分類Dev

クラスにインターフェイスを実装し、別のクラスから継承させるにはどうすればよいですか?

分類Dev

インターフェイスがJavaで実装しているクラス型を参照するにはどうすればよいですか?

分類Dev

クラスメンバーを使用してインターフェイスを実装するにはどうすればよいですか?

分類Dev

インターフェイスの実装クラスのタイプパラメータを設定するにはどうすればよいですか?

分類Dev

同じインターフェースの2つの具体的な実装を取り入れたコントローラーコンストラクターをLaravelで作成するにはどうすればよいですか?

分類Dev

インターフェイスを使用して1つのクラスを取得するにはどうすればよいですか?

分類Dev

Pythonを使用してランタイムオブジェクト(異なる)実装を実装するにはどうすればよいですか?

分類Dev

最初のオブジェクトが2番目のオブジェクトに必要なインターフェイスを実装している場合にのみ、C#で実行時に2つのオブジェクトを作成するにはどうすればよいですか?

分類Dev

インターフェイスを実装するクラスのリストを取得するにはどうすればよいですか?

分類Dev

メソッドパラメータとしてまだ実装されていないインターフェイスを使用するクラスでJUnitテストを実行するにはどうすればよいですか?

分類Dev

メソッドパラメータとしてまだ実装されていないインターフェイスを使用するクラスでJUnitテストを実行するにはどうすればよいですか?

分類Dev

具体的なインターフェースを実装するクラスの代わりに、すべてのクラスに独自のアノテーションを使用することを禁止するにはどうすればよいですか?

分類Dev

インターフェイスビルダーを使用していないときにprepareForSegueを実装するにはどうすればよいですか?

分類Dev

実装への依存関係を作成せずに、インターフェイスの実装を使用するにはどうすればよいですか?

分類Dev

異なるサブクラスのインターフェイスの複数のインスタンスを実装するにはどうすればよいですか?

分類Dev

2つの異なるインターフェースを使用して外部IPにpingするにはどうすればよいですか?

分類Dev

インターフェイスを実装する基本クラスから派生したインスタンスのリストを作成するにはどうすればよいですか?

分類Dev

インターフェイスの基本プロパティを作成し、派生したもので実装するにはどうすればよいですか?

分類Dev

3つ以上の異なるクライアントソースを使用してMonoを作成するにはどうすればよいですか?

分類Dev

ジェネリックインターフェースのすべての実装をautofacに登録するにはどうすればよいですか?

分類Dev

インターフェイスをパラメータとして実装するクラスを受け入れるTypeScript関数を作成するにはどうすればよいですか?

分類Dev

Javaの複数の実装クラスでダブルインターフェイスを使用するにはどうすればよいですか?

分類Dev

異なる期間のインデックスを使用してデータフレームを作成するにはどうすればよいですか

分類Dev

インターフェイスを動的に実装するクラスからメソッドを取得するにはどうすればよいですか?

分類Dev

どのクラスが複数のインターフェースを実装しているのかをEclipseで見つけるにはどうすればよいですか?

分類Dev

インターフェイスのクラスを知っているだけでインターフェイスを実装するクラスのオブジェクトをメソッドに渡し、それをArrayListに追加するにはどうすればよいですか?

Related 関連記事

  1. 1

    変更できないクラスを作成してインターフェイスを実装するにはどうすればよいですか?

  2. 2

    クラスパスでインターフェースのすべての実装を見つけるにはどうすればよいですか?

  3. 3

    インターフェイスの匿名実装を作成するにはどうすればよいですか?

  4. 4

    クラスにインターフェイスを実装し、別のクラスから継承させるにはどうすればよいですか?

  5. 5

    インターフェイスがJavaで実装しているクラス型を参照するにはどうすればよいですか?

  6. 6

    クラスメンバーを使用してインターフェイスを実装するにはどうすればよいですか?

  7. 7

    インターフェイスの実装クラスのタイプパラメータを設定するにはどうすればよいですか?

  8. 8

    同じインターフェースの2つの具体的な実装を取り入れたコントローラーコンストラクターをLaravelで作成するにはどうすればよいですか?

  9. 9

    インターフェイスを使用して1つのクラスを取得するにはどうすればよいですか?

  10. 10

    Pythonを使用してランタイムオブジェクト(異なる)実装を実装するにはどうすればよいですか?

  11. 11

    最初のオブジェクトが2番目のオブジェクトに必要なインターフェイスを実装している場合にのみ、C#で実行時に2つのオブジェクトを作成するにはどうすればよいですか?

  12. 12

    インターフェイスを実装するクラスのリストを取得するにはどうすればよいですか?

  13. 13

    メソッドパラメータとしてまだ実装されていないインターフェイスを使用するクラスでJUnitテストを実行するにはどうすればよいですか?

  14. 14

    メソッドパラメータとしてまだ実装されていないインターフェイスを使用するクラスでJUnitテストを実行するにはどうすればよいですか?

  15. 15

    具体的なインターフェースを実装するクラスの代わりに、すべてのクラスに独自のアノテーションを使用することを禁止するにはどうすればよいですか?

  16. 16

    インターフェイスビルダーを使用していないときにprepareForSegueを実装するにはどうすればよいですか?

  17. 17

    実装への依存関係を作成せずに、インターフェイスの実装を使用するにはどうすればよいですか?

  18. 18

    異なるサブクラスのインターフェイスの複数のインスタンスを実装するにはどうすればよいですか?

  19. 19

    2つの異なるインターフェースを使用して外部IPにpingするにはどうすればよいですか?

  20. 20

    インターフェイスを実装する基本クラスから派生したインスタンスのリストを作成するにはどうすればよいですか?

  21. 21

    インターフェイスの基本プロパティを作成し、派生したもので実装するにはどうすればよいですか?

  22. 22

    3つ以上の異なるクライアントソースを使用してMonoを作成するにはどうすればよいですか?

  23. 23

    ジェネリックインターフェースのすべての実装をautofacに登録するにはどうすればよいですか?

  24. 24

    インターフェイスをパラメータとして実装するクラスを受け入れるTypeScript関数を作成するにはどうすればよいですか?

  25. 25

    Javaの複数の実装クラスでダブルインターフェイスを使用するにはどうすればよいですか?

  26. 26

    異なる期間のインデックスを使用してデータフレームを作成するにはどうすればよいですか

  27. 27

    インターフェイスを動的に実装するクラスからメソッドを取得するにはどうすればよいですか?

  28. 28

    どのクラスが複数のインターフェースを実装しているのかをEclipseで見つけるにはどうすればよいですか?

  29. 29

    インターフェイスのクラスを知っているだけでインターフェイスを実装するクラスのオブジェクトをメソッドに渡し、それをArrayListに追加するにはどうすればよいですか?

ホットタグ

アーカイブ