둘러 보았지만 찾고있는 것을 정확히 찾을 수 없습니다.Java : 배열에 메서드 호출을 저장하고 나중에 실행 하시겠습니까?
내가 무슨 일을하는지는 지정된 크기의 bufferedImage를 작성하여 JPanel에서 그릴 수있는 영역을 나타내는 클래스를 정의하고이 이미지 그래픽을 사용하여 이미지를 doubleBuffer로 그런 다음이 영역은 상위 JPanel에 이미지로 그려져 경계선을 만지는 모든 패널에 의존하는 javax의 미친 패널 구성 논리를 처리하지 않고 패널 영역을 만듭니다. 이것은 본질적으로 그래픽 위젯을위한 그래픽 컨텍스트로서 비디오 게임 UI와 유사하게 이동/크기 조정 등이 가능합니다.
내가 뭘하려는 건 그래픽 클래스, 매개 변수가 포함 된 작업을 그리는 메서드 호출을 저장할 수 있어야합니다. 이 목적은 런타임 또는 소스 코드에서 매개 변수의 값이 이미 지정된 메서드를로드 할 수 있도록하는 것입니다. 캡슐화를 중단하지 않고도 호출 할 수 있습니다. 부모 클래스가 직접 그리거나 버퍼링 된 이미지에 피할 수있는 방식을 사용하여 런타임에 메서드를 추가하거나 드로잉을위한 메서드 호출을 PanelRegion 클래스 자체에서 수행해야하므로 다른 PanelRegion을 원할 때마다 새로 특수화 된 PanelRegion을 만들어야합니다. 이것은 효과적이지 않을 것입니다. 내가 할 수 있도록하고 싶습니다 무엇
단순히 같은 것입니다 : 감각을 만드는되지 않습니다 만약
Class graphics = panelRegion.getGraphics();
String methodName = "drawRectangle";
int xPos = 0;
int yPos = 0;
int width = 0;
int height = 0;
ImaginaryMethodClass method = graphics.getMethod(methodName, int, int, int, int);
method.imaginaryMethodThatLoadsParameterValues(xPos, yPos, width, height);
panelRegion.addMethod(method);
panelRegion.invokeDrawMethods();
public void invokeDrawMethods()
{
for(ImaginaryMethodClass aMethod : listOfMethods)
{
aMethod.imaginaryMethodThatExecutesTheMethodWithTheLoadedParameterValues();
}
}
, 내가 찾은 본질적으로 유일한 해결책은 당신이 할 수있다 추상 적으로 reflector 클래스를 사용하여 배열에 메서드를로드합니다. 그러나 실행하려면 해당 메서드의 매개 변수 값을 보내야합니다. 소스 코드에서 본질적으로 복잡한 메서드 호출을 만듭니다. 나는 그 단계를 자르거나 그 방법이 내가 주어진 값으로 스스로를 수행 할 수 있도록하고 싶다.
참조 [커맨드 패턴 (http://en.wikipedia.org/wiki/Command_pattern) – Bohemian