Saya ingin mengaktifkan konstruktor default secara umum.

Seperti dalam, mendapatkan array konstruktor dan mengaktifkan salah satunya (mari kita asumsikan yang pertama adalah default).

Sedikit kode yang ingin saya gunakan adalah sebagai berikut:

construct (Class clazz){
      .....
      List<Constructor> constructors=
      Arrays.stream(clazz.getDeclaredConstructors()).filter(X->X.isAnnotationPresent(Inject.class)).collect(Collectors.toList());
           if(constructors.size()>1)
                    throw new MultipleInjectConstructorsException();
            else if(constructors.size()==0){
                    List<Constructor> defaultctor=
                    Arrays.stream(clazz.getDeclaredConstructors()).filter(X->X.getParameterCount()==0).collect(Collectors.toList());
                    if(defaultctor.size()==0)
                        throw new NoConstructorFoundException();
                    else {
                        /**activate the default constructor i got*/
                        //obj=defaultctor.get(0); 
        
                    }
                }
....
}

Bagaimana saya bisa menggunakan konstruktor default yang ada di defaultctor.get(0)?

Saya pikir pertanyaannya dapat digeneralisasi lebih jauh.

Bagaimana cara mengaktifkan metode yang telah diterima oleh refleksi jika saya tahu nama metode dan setiap info tentangnya?

Bagaimana saya bisa mengaktifkannya secara umum?

0
yellowcard123 13 Mei 2021, 21:00

1 menjawab

Jawaban Terbaik

Constructor.newInstance adalah metode yang memanggil instance konstruktor. Namun, Anda hampir pasti akan lebih baik menggunakan sesuatu seperti Supplier dan referensi metode dari formulir MyType::new.

1
Tom Hawtin - tackline 13 Mei 2021, 18:18