1

我有这个代码:

   //FrameFixture frame = (...got it from window, main frame...)
   JTableFixture table = frame.table(new GenericTypeMatcher<JTable>(JTable.class) {
         @Override protected boolean isMatching(JTable table) {
            return (table instanceof myTreeTable); 
         }  
    });

有没有更好的语法糖来通过他的 .class 获取组件(从基本组件继承)?

4

1 回答 1

1

如果您需要实现,ComponentMatcher那么TypeMatcher可以根据类型进行匹配。

但是TypeMatcher不能在ContainerFixture.table方法的情况下使用,因为它们需要GenericTypeMatcher

TypeMatcher两者GenericTypeMatcher都实现ComponentMatcher但不在同一层次结构中。

GenericTypeMatcher是抽象的,所以你必须提供一个实现。如果需要,您可以使用自己的扩展名,即:

class ConcreteTypeMatcher<T extends Component> extends GenericTypeMatcher<T> {
    Class<T> type;

    public ConcreteTypeMatcher(Class<T> supportedType) {
        super(supportedType);
        this.type = supportedType;
    }

    @Override
    protected boolean isMatching(T arg) {
        return type.isInstance(arg);
    }
}

并像这样使用它:

JTableFixture table = frame.table(
      new ConcreteTypeMatcher<myTreeTable>(myTreeTable.class));
于 2012-07-27T05:34:56.903 回答