Чтобы действительно обеспечить безопасность типов, а также гибкость для не int
идентификаторов, попробуйте что-то вроде:
public interface IdentifiedThing<I extends Serializable> {
I getId();
}
Затем вы можете заблокировать ввод:
public interface MyInterface<I extends Serializable, IT extends IdentifiedThing<I>> {
Collection<IT> find(IT t);
Collection<IT> findAll();
IT findById(I id);
void add(IT t);
void remove(IT t);
}
(я также исправил использование заглавных букв в стиле Java; -)