Java에서 외부 프로그램을위한 새로운 스크립트 생성기를 만들고 있습니다. 이 언어는 변수를 지원하지만 형식이없는 언어입니다. 일반적으로 VAR 유형이 부동이다Java - 값 유형을 인식하는 패턴
public class Var
{
private String name;
private String type;
private float defaultValue;
private float lowerBound;
private float upperBound;
private float value;
private LinkedList<Float> valuesConstraint;
private String description;
private Category category;
private LinkedList<CvarDependency> dependencies;
...
}
뿐만 아니라 부울 [0 | 1] 수 있으며, 문자열, 또는 INT :이 내가 처음 작성한 코드의 예입니다. 그래서 나는이 구현을 만들기 위해 결국 :
abstract class Var
{
private String name;
...
}
public class IntVar extends Var
{
private int value;
private int defaultValue;
private int lowerBound; //-infinite
private int upperbound; //+infinite
...
}
public class FloatVar extends Var
{
private float value;
private float defaultValue;
private float lowerBound; //-infinite
private float upperbound; //+infinite
...
}
public class StringVar extends Var
{
private String value;
private String defaultValue; //empty string
...
}
public class BoolVar extends Var
{
private boolean value;
private boolean defaultValue;
private boolean lowerBound; //false <-> 0
private boolean upperbound; //true <-> 1
...
}
지금은 LinkedList의로 그 바르를 저장해야하지만, 내가 적절한 캐스팅을 관리하는 방법의 내용을 읽을해야 할 때? 이 접근법을 사용하는 것은 좋은 습관이 아니라고 읽었습니다.
Var var = Manager.getVar("namevar");
if(var.getClass().getName().equals("StringVar"))
...
else if(var.getClass().getName().equals("IntVar"))
...
else if(var.getClass().getName().equals("FloatVar"))
...
else if(var.getClass().getName().equals("BoolVar"))
...
이 문제를 해결하는 데 도움이되는 정보가 있습니까?
각 Var에 대해 '방문자'패턴을 제안합니다. 그런 식으로 방문자는 캐스팅을하는 법을 압니다. –
이것은 내가 필요한 패턴이다. 이 답글을이 게시글에 게시하여 답장 스택 맨 위에 넣을 수 있습니다! – Otacon
instanceOf 연산자를 사용할 수 있습니까? – basav