FEST: Getting a component by his class (inherited from a basic component)
-
12-12-2019 - |
Domanda
I have this code:
//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);
}
});
Isnt there any better kind of syntactic sugar for fetching a component by his .class (inheriting from a basic component)?
Soluzione
If you need implementation of ComponentMatcher
then TypeMatcher can do matching based on type.
However TypeMatcher
cannot be used in case of ContainerFixture.table methods as they require GenericTypeMatcher
.
TypeMatcher
and GenericTypeMatcher
both implement ComponentMatcher
but aren't in the same hierarchy.
GenericTypeMatcher
is abstract, so you have to provide an implementation. You could get away with your own extension if needed, ie:
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);
}
}
And use it like this:
JTableFixture table = frame.table(
new ConcreteTypeMatcher<myTreeTable>(myTreeTable.class));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow