Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menentukan Kelas Jenis Generik dalam Java pada Runtime?

Bagaimana untuk Menentukan Kelas Jenis Generik dalam Java pada Runtime?

Susan Sarandon
Susan Sarandonasal
2024-11-12 07:39:02717semak imbas

How to Determine the Class of a Generic Type in Java at Runtime?

Menentukan Kelas Jenis Generik dalam Java

Di Jawa, apabila berurusan dengan kelas generik, selalunya perlu untuk menentukan jenis khusus yang dipegang oleh jenis generik masa jalan. Walau bagaimanapun, maklumat jenis generik dipadamkan semasa penyusunan, menjadikannya satu cabaran untuk mengaksesnya secara terus.

Mari kita pertimbangkan contoh:

public class MyGenericClass<T> {

  public void doSomething() {
    T instance = (T) thirdPartyLib.create(T.class);
  }
}

Dalam senario ini, T.class akan menghasilkan Ralat literal kelas tidak sah kerana jenis generik T tidak diketahui. Untuk menangani perkara ini, penyelesaian diperlukan.

Penyelesaian Penyelesaian

Satu penyelesaian yang berkesan ialah dengan menghantar jenis sebagai parameter kepada kaedah statik, yang akan memberikan maklumat kelas kepada kelas generik. Berikut ialah contoh:

public class MyGenericClass<T> {

  private final Class<T> type;

  public static <U> MyGenericClass<U> createWithClass(Class<U> type) {
    return new MyGenericClass<>(type);
  }

  private MyGenericClass(Class<T> type) {
    this.type = type;
  }

  public void doSomething() {
    T instance = type.newInstance();
  }
}

Kaedah ini membolehkan anda menghantar jenis kelas secara eksplisit, memastikan kelas generik mempunyai akses kepada maklumat yang diperlukan. Walaupun penyelesaian ini mungkin bukan penyelesaian yang paling elegan, ia menyediakan cara yang boleh dipercayai untuk menentukan kelas jenis generik pada masa jalan.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Kelas Jenis Generik dalam Java pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn