RELOADシステム(http://rpg.hamsterrepublic.com/ohrrpgce/RELOAD)は、ツリーベースのデータ格納システムとしてOHRRPGCE GCSで使用されます。このシステムのノードは、7つのタイプと任意の数の子のうちの1つを持つことができます。Javaでマルチタイプツリーシステムを処理するにはどうすればよいですか?
現在、私はジェネリックス経由でRELOADを処理するためのJava用のライブラリを作成していますが、それは私には嫌な感じです。私はそれを正しくやっていますか、より効率的な方法がありますか?私はあなたがここで達成しようとしているかわからない
/**
*
*/
package hamsterwrench.data.reload;
import java.util.ArrayList;
/**
* @author Matt
*
*/
public abstract class ReloadNode<T>{
@SuppressWarnings("rawtypes")
private ArrayList<ReloadNode> children = new ArrayList<ReloadNode>();
private T data;
private long nodeID;
private String name;
protected ReloadNodeType type;
public ReloadNode(long id, String newName){
name = newName;
nodeID = id;
}
public T readData(){
return data;
}
public void writeData(T input){
data = input;
}
public String name(){
return name;
}
public ReloadNodeType type(){
return type;
}
@SuppressWarnings("rawtypes")
public void addChild(ReloadNode r){
children.add(r);
}
public int numberOfChildren(){
return children.size();
}
public boolean removeChild(@SuppressWarnings("rawtypes") ReloadNode r){
return children.remove(r);
}
@SuppressWarnings("rawtypes")
public ReloadNode getChild(int i){
return children.get(i);
}
public ArrayList<String> getChildrenNames(){
ArrayList<String> result = new ArrayList<String>();
for(int i = 0; i < children.size(); i++){
result.add(children.get(i).name());
}
return result;
}
public long ID(){
return nodeID;
}
}
親のタイプが子エレメントのタイプを制限しない場合、私はジェネリックスから得られるものは表示されません。あなたのAPIをより良く判断するために、そのAPIがどのように使用されるのかを確認する必要があります。 – Joni
既存の実装(おそらく仕様に基づくJava以外のもの)への参照がありますか?また、Java変数については、実際にはdouble、int、Stringの3種類です。データが "String tag" - "data"形式であるため、ソートのハッシュマップを調べることができます。これはjsonと非常によく似ていますが、コンパクトで複雑なものです。 – Thomas