Java 创建泛型图避免实例

Java 创建泛型图避免实例,java,generics,graph,Java,Generics,Graph,大家好, 我在寻找图形的javafx实现, 但是对于id,我想要任何类型的。 问题是,当我想显示它时,它取决于类型,所以我可以这样做: public class LabelCell<T> extends Cell<T> { public LabelCell(T id) { super(id); Pane pane=new Pane(); Label view; if (id instanceof SQLTableVertex) {

大家好,

我在寻找图形的javafx实现, 但是对于id,我想要任何类型的。 问题是,当我想显示它时,它取决于类型,所以我可以这样做:

public class LabelCell<T> extends Cell<T> {

public LabelCell(T id) {
    super(id);
    Pane pane=new Pane();
    Label view;

    if (id instanceof SQLTableVertex) {

     String labelString="";

     labelString+=((SQLTableVertex) id).getName();
     labelString+="\n"+"________________________";
     for (Identifier i:((SQLTableVertex) id).getIdentifiers())
         labelString+= "\n" +i;

     view = new Label(labelString);

    }       

    else 
        view=new Label(id.toString());


    view.setStyle("-fx-background-color: lightgray;");
    pane.getChildren().add(view);
    setView(pane);

}
公共类LabelCell扩展单元格{
公共LabelCell(T id){
超级(id);
窗格=新窗格();
标签视图;
if(SQLTableVertex的id实例){
字符串标签字符串=”;
labelString+=((SQLTableVertex)id).getName();
labelString+=“\n”+“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
对于(标识符i:((SQLTableVertex)id).getIdentifiers())
标签字符串+=“\n”+i;
视图=新标签(标签串);
}       
其他的
视图=新标签(id.toString());
view.setStyle(“-fx背景色:浅灰色;”);
pane.getChildren().add(视图);
设置视图(窗格);
}
但我失去了一个事实,那就是它是通用的。 我也可以在模型的切换中添加一个案例,但这是相同的问题


我该如何处理它呢?谢谢。您可以创建一个子类,例如
SQLTableLabelCell extensed LabelCell
,来处理
SQLTableVertex
的特殊逻辑吗?缺点是,在这种情况下,您让客户机承担不使用通用类的责任。这反过来又可以封装在fa中但是我相信工厂需要使用instanceof,所以我猜你不会很高兴;谢谢,我可以这样做,但是我必须在模型中的开关中添加一个案例。在这种情况下,它比instanceof好吗?最后我做了不同的事,我创建了一个“String”图这是SQLTableVertex的字符串表示形式,因此我没有在单元格中进行测试。最后一个对我来说似乎是一个相当好的解决方案。虽然我不知道您的完整设计,但我不能确定。可能有优缺点,您可以最好自己衡量它们。您可以创建一个子类,例如
SQLTableLabelCell扩展实验室吗elCell
来处理
SQLTableVertex
的特殊逻辑?缺点是,在这种情况下,您让客户端负责不使用通用类。这反过来可以封装在工厂中,但我相信工厂需要使用
instanceof
,所以我想您不会很高兴;谢谢u、 我可以这样做,但我必须在模型中的开关中添加一个case,在这种情况下,它比instanceof好吗?最后我做了不同的处理,我创建了一个“String”图这是SQLTableVertex的字符串表示形式,因此我没有要在单元格中进行的测试。最后一个对我来说似乎是一个相当好的解决方案。虽然我不知道您的完整设计,但我不能真正确定。可能有优缺点,您最好自己称重。