2012-07-26 56 views
1

我有這樣的代碼:FEST:他的班(從基本組件繼承)獲取一個組件

//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提取的成分(從繼承基本組件)?

回答

1

如果您需要執行ComponentMatcher那麼TypeMatcher可以根據類型進行匹配。

但是TypeMatcher不能在ContainerFixture.table方法的情況下使用,因爲它們需要GenericTypeMatcher

TypeMatcherGenericTypeMatcher都執行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)); 
+0

出色答卷,像前一個。非常感謝,Max – Whimusical 2012-07-27 09:18:32

+1

@ user1352530不用擔心,很高興它解決了! :) – tenorsax 2012-07-27 14:14:39