我需要一些帮助,伙计们: 问题是我想要ListView>用于显示基础dataModel类的.toString(或类似内容)的组件(ObservableList> tests = FXCollections.observableList(list))
所以在Java中:
public class KinderNonStandard extends SeleneseTestCase {
@Before
public ... {}
@Test
public ... {}
@After
public ... {}
@Override
public String toString() {
return "I want this string to be shown at presentation layer of listView<T>";
}
}
然后我有:
public class TestWindowController implements Initializable{
@FXML private ListView<Class<? extends SeleneseTestCase>> availableTests;
@Override
public void initialize(URL location, ResourceBundle resources) {
//list contains classes like KinderNonStandard (extends SeleneseTestCase...)
ObservableList<Class<? extends SeleneseTestCase>> tests = Collections.observableList(list);
availableTests.setItems(tests);
}
}
最后,当我运行一个应用程序时,在ListView中我看到类似“class package.subpackage.KinderNonStandard”的内容,而不是在该类的toString中重写的内容。 好吧,我不太习惯使用地图和使用键作为字符串和值作为底层数据模型类。 那么我可以以某种方式管理它以显示覆盖toString方法吗?
感谢您的帮助!
答案 0 :(得分:0)
您的toString()
位于KinderNonStandard
非Class<? extends SeleneseTestCase>
内,而您的列表包含Class<? extends SeleneseTestCase>
。要强制调用toString()
方法,首先需要实例化相应类的对象。例如:
for(Class<? extends SeleneseTestCase> testItem : tests) {
System.out.printlin(Class.forName(testItem.getName()).newInstance().toString());
}