Any time you need to override a method, the signature must be the same as the method to be overriden. Therefore you must pass Object as the one and only argument to your equals method for it to function as desired.
As an alternative to Grantham's solid solution, you can use getClass() in place of instanceof, if for example you plan on extending your generic class and don't want sub class instances to ever equal your super class instances.
That would look like:
@Override
public boolean equals(Object other) {
if (other != null && getClass() == other.getClass()) {
T o = (T) other;
// ...
}
return false;
}