0

伙计们,我需要一些帮助:问题是我希望 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 方法吗?

感谢帮助!

4

1 回答 1

0

toString()KinderNonStandardNOTClass<? extends SeleneseTestCase>中,而您的列表包含Class<? extends SeleneseTestCase>. 要强制调用该toString()方法,首先需要实例化相应类的对象。前任:

for(Class<? extends SeleneseTestCase> testItem : tests) {
    System.out.printlin(Class.forName(testItem.getName()).newInstance().toString());
}
于 2012-12-13T02:13:16.487 回答