If I want to pass to a constructor a Comparator that can compare on two different types, should the parameter of the constructor be like this?:
public MyClass(Comparator<?> comp) {
this.comp = comp;
}
Then my comparator class:
public NameComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
}
Then whenever I instantiate the class I do:
MyClass myClass = new MyClass(new NameComparator());
Is this the correct way to go about doing this?
Thanks
EDIT:
Here's the relevant code:
public class BST<T> {
/* binary search tree */
...
private Comparator<T> c;
/* pass in comparator to constructor*/
public BST(Comparator<T> c) {
this.c = c;
}
Comparator:
public class NameComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
}
When I am creating BST:
BST bst = new BST(new NameComparator());