Skip to content

Instantly share code, notes, and snippets.

@pablisco
Created November 17, 2016 09:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pablisco/5a78ec1932b2127eeeb650fc3ae7ba32 to your computer and use it in GitHub Desktop.
Save pablisco/5a78ec1932b2127eeeb650fc3ae7ba32 to your computer and use it in GitHub Desktop.
Object Matcher
public class ObjectMatcher<T> {
private SparseArrayCompat<T> values = new SparseArrayCompat<>();
public MatchCandidate matchWith(T value) {
return new MatchCandidate(value);
}
public T find(Object... keys) {
return values.get(Arrays.hashCode(keys));
}
public class MatchCandidate {
private T value;
private MatchCandidate(T value) {
this.value = value;
}
public ObjectMatcher<T> when(Object... keys) {
values.put(Arrays.hashCode(keys), value);
return ObjectMatcher.this;
}
}
}
ObjectMatcher<String> matcher = new ObjectMatcher<String>()
.matchWith("Awesome item").when(GreatEnum.ConditionA, AwesomeService.KEY_SOMETHING);
String result = matcher.find(GreatEnum.ConditionA, AwesomeService.KEY_SOMETHING);
assert result.equals("Awesome item");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment