Chcę przekazać typ klasy jako parametr do metody w której java.all ma ten sam parametr konstruktora.i utworzyć wystąpienie tej klasy w tej method.is to możliwe?przekazując typ klasy jako parametr i tworząc jego instancję
Odpowiedz
Korzystanie refleksję, aby utworzyć instancję:
Object obj = clazz.newInstance();
ten użyje domyślny no-arg konstruktor do utworzenia instancji.
Constructor<?> constructor = clazz.getConstructor(String.class);
Object object = constructor.newInstance(new Object[] { strArgument });
Aby utworzyć instancję, jeśli masz inny konstruktor, który pobiera argumenty.
Musisz użyć odbicia, aby to zrobić, ale tak, to na pewno jest możliwe.
void MyMethod(Class className)
{
try {
Object obj = className.newInstance();
//obj is a newly created object of the passed in type
}
catch (Exception ex) { }
}
Poszukujesz Refleksji.
Twoja metoda będzie wyglądać mniej więcej tak:
public void m1(Class c) {
try {
Object obj = c.newInstance();
//do something with your new instance
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
}
}
Oracle doc dla API refleksja jest here
tak można
void x(Class cls) throws InstantiationException, IllegalAccessException {
cls.newInstance();
}
Zauważ, że Class.newInstance może zakończyć się niepowodzeniem
IllegalAccessException - jeśli klasa lub jej sygnalnych konstruktor nie jest dostępny.
Wywoływanie wyjątku InstantiationException - jeśli ta Klasa reprezentuje klasę abstrakcyjną, interfejs, klasę tablicową, typ pierwotny lub nieważny; lub jeśli klasa nie ma konstruktora nullary; lub jeśli wystąpienie nie powiedzie się z innego powodu.
zobacz API więcej
- 1. przekazując funkcję jako parametr do metody szablonu klasy szablonu
- 2. Konstruktorzy: różnica między zalegających i przekazując parametr
- 3. Utwórz nową instancję typu podanego jako parametr
- 4. JSF- przekazując parametr do valuechangelistener
- 5. Podaj typ klasy jako parametr do użycia w ArrayList?
- 6. W kotlinach, jak zwrócić instancję zdefiniowaną przez ogólny parametr klasy
- 7. Możliwy jest typ nullotyczny jako parametr ogólny?
- 8. Typ klasy C++ jako argument
- 9. Przełęcz konkretny typ obiektu jako parametr do metody rodzajowe
- 10. Przechodząc typ zmiennej jako parametr funkcji
- 11. Interfejs usługi WWW - typ złożony jako parametr?
- 12. Typ ogólny jako parametr w metodzie Java
- 13. Utwórz instancję, ja już mam typ
- 14. wskaźnik do członka klasy jako parametr szablonu
- 15. Wskaźnik do elementu klasy jako parametr szablonu
- 16. Spring: jak utworzyć instancję Spring bean, która pobiera parametr runtime?
- 17. Uboczny referencje przekazując wątku klasy otoki
- 18. Uzyskaj typ zmiennej i utworzyć nową instancję tego typu
- 19. Jak AutoMapper utworzyć instancję klasy
- 20. Import na instancję klasy
- 21. Django reszta ramy: nadpisuj create() w ModelSerializer przekazując dodatkowy parametr
- 22. uzyskać możliwą instancję/typ obiektu
- 23. Jak utworzyć instancję strumienia, jeśli zadeklarujesz ją jako członka klasy?
- 24. przekazując funkcję jako argument w funkcji
- 25. Pobierz instancję klasy według nazwy klasy string
- 26. Jak utworzyć instancję klasy z jej TRttiType?
- 27. Korzystanie z ogólnej klasy bazowej jako parametr metody
- 28. Załaduj bibliotekę, przekazując parametr do konstruktora w codeigniter
- 29. Przekaż klasę jako parametr?
- 30. Void jako typ literalny?
Czy jesteś pewien, że tak naprawdę "chcesz" to zrobić? Nie chciałbym tego "robić" - nigdy. – Dariusz
Jaki jest twój przypadek użycia, który jest przekonujący? – Santosh
Istnieją ważne przypadki użycia, takie jak tworzenie instancji klas z wtrysku opartego na fabryce/konstruktorze. Jeśli nie piszesz takiego szkieletu, równie dobrze możesz użyć DI, aby utworzyć instancję klasy za pomocą wtrysku konstruktora. –