3
가능한 중복 parameteres 때 일반적인 클래스 인스턴스를 만들기 :
How to create instance of a class with the parameters in the constructor using reflection?생성자 초기화가
이 일이 어떻게 가능한가를?
public class TestGenerics<T> {
private Class<T> mClass;
public TestGenerics(Class<T> cls){
mClass = cls;
}
public T get(){
try{
return mClass.newInstance();
}catch(Exception e){
e.printStackTrace();
return null;
}
}
}
그리고 main
클래스 :
public class HelloWorld {
public static void main(String[] args) {
TestGenerics<Gerbil> g = new TestGenerics<Gerbil>(Gerbil.class);
Gerbil a = g.get();
a.hop();
}
}
문제는 내가 생성자를 제공 할 필요가있다
public class Gerbil {
private int gerbilNumber;
public Gerbil(int gn){
this.gerbilNumber = gn;
}
public void hop() {
System.out.println("It's gerbil number" + this.gerbilNumber + "and it's hopping.");
}
}
내가 제네릭 클래스
TestGenerics
있습니다 I 클래스
Gerbil
이
Gerbil
은 정수 값을 갖지만 how (가능한 경우)를 모릅니다. 그렇지 않으면 빈/기본 생성자를 남겨두면 코드가 정상적으로 작동하지만 실제 클래스 생성자가 매개 변수를 전달해야 할 때 인스턴스 폼을 일반 클래스로 만들 수 있습니까?
한 2 초 빨리 나보다. nice :) – ppeterka
가끔은 경쟁 조건처럼 보입니다. 특히'erlang '과 반대되는'java'와 같은 영역에서 보입니다. 예를 들어, – stemm
입니다. 고맙지 만 이것은 잘 작동하고 있습니다. 숫자와 generic 클래스를 작성할 때 실제 클래스의 생성자가 필요로하는 매개 변수의 유형 두 개의 다른 생성자 또는 다른 시나리오가있는 경우 다른 생성자에 대해 서로 다른 일반 클래스를 작성해야합니까? – Leron