특정 메서드를 호출하는 것과 관련된 String 속성이 있습니다. (GWT ClientBundle)문자열을 사용하여 GWT ClientBundle 인터페이스의 메서드를 호출하는 방법은 무엇입니까?
public interface MyClientBundle extends ClientBundle
{
@Source("icon_first.jpg")
ImageResource icon_first();
@Source("logo_second.jpg")
ImageResource icon_second();
@Source("icon_third.jpg")
ImageResource icon_third();
}
나는 현재 선택 문에 비효율적 인 조회를 사용하고 있습니다 :
는 나는 이러한 방법을 내 인터페이스에서 아이콘 속성
public class MyDto
{
String icon; // "first", "second", "third" etc
public String getIcon()
{
return icon;
}
}
으로,이 DTO를 대신 문자열을 작성하여 올바른 메소드를 선택하려고합니다.
public ImageResource getValue(MyDto object)
{
return getIconFromCode(object.getIcon());
}
private ImageResource getIconFromCode(String code)
{
if(code.equalsIgnoreCase("first"))
{
return resources.icon_first();
}
else if(code.equalsIgnoreCase("second"))
{
return resources.icon_second();
}
else if(code.equalsIgnoreCase("third"))
{
return resources.icon_third();
}
else
{
return resources.icon_default();
}
}
위 대신 올바른 방법을 선택하는 문자열을 만들려면 "icon_" + object.getIcon()+ "()"
나는 리플렉션을 사용해야한다는 것을 알고 있습니까? 어떻게 완성 될까요?
무엇을이 용도로 사용하십니까? 반사는 다소 복잡하고 아마 당신이 원하는 것이 아니며, 나는 추측하고 있습니다. 빠른 액세스를 위해 배열, ArrayList 또는 HashMap을 사용할 수 있습니다. 배열과 ArrayList는 int 인덱스를 통해 조회 할 것이고, HashMap은 int 인덱스를 포함한 모든 키를 통해 인덱스 할 수있게 해줄 것입니다. 그런 다음 MyClientBundle 내부에서 키/인덱스 매개 변수를 사용하고 연관된 ImageResource를 반환하는 getter 메서드를 만들 수 있습니다. – stoooops
ClientBundle은 각 메서드가 특정 이미지에 매핑되는 구체적인 클래스를 만드는 GWT 인터페이스입니다. 매번 올바른 이미지를 렌더링하고 싶지만 20 개 정도의 요소가있는 스위치 (또는 if-elses)는 원하지 않습니다. – slugmandrew
MyClientBundle에 인터페이스를 추가하고 코드 생성기에서 실제 클래스를 생성하므로 메서드를 추가 할 수 없다고 생각합니다. 반사가 GWT 에뮬레이터에서 지원되지 않기 때문에 어쨌든 바보가되고 있습니다. 어떤 제안을 환영합니다 :) – slugmandrew