정적 블록에서 hashmap을 초기화 한 클래스가 있습니다. 열쇠를 건네면서 나는 수업 인 가치를 얻었습니다. 이 클래스의 객체를 생성하기 위해서. 생성자 클래스를 사용하여 생성자를 가져오고 인수를 전달하고 객체를 생성했습니다.getConstructor 메서드를 선택하는 조건
해시 맵에는 두 개의 클래스가 있습니다. EchoExpression 객체를 만들려면 두 개의 인수를 전달해야하며 OutExpression 클래스에는 하나의 인수 (String) 만 전달해야합니다.
질문 : 내가 얻을 수있는 생성자 실행하고 구현하는 데 필요한 키에 의해 반환 된 클래스를 기반으로
, 여부를 하나 개의 인수 또는 두 개의 인수를 사용하여 생성자입니다.
public class ExampleFactory {
private static HashMap<String,Class<?>> hmap = new HashMap<String,Class<?>>();
static
{
hmap.put("echo", EchoExpression.class);
hmap.put("Out", OutExpression.class);
}
public void getExpo(String key,String expression)
{
Class aClass =map.get(key);
//Constructor implementation for OutExpression where only one argument string is passed
Constructor constructor = aClass.getConstructor(new Class[]{String.class});
Object object= constructor.newInstance(expression);
//constructor for passing two arguments string for EchoExpression
Constructor constructor = aClass.getConstructor(new Class[]{String.class,Class.class});
Object object= constructor.newInstance(expression, Boolean.class);
return null;
}
}
if else를 사용하지 않고 구현할 값 (클래스) 중에서 선택하는 방법은 무엇입니까?
어떤 언어입니까? – EdChum