Сохраняйте ту же подпись, пока вы определяете Storage
, потому что вы все еще определяете метод find
(и не используете его):
Storage implements IStorage {
<T extends ICommon> Collection<T> find(String name, boolean isExact) {
//some code
}
}
Вы будете указывать конкретный параметр типа, когда вы фактически вызываетеэтот универсальный метод:
Storage s = new Storage();
s.<IOrganization>find("hello world", true);
Но тип параметра T
, который вы вводите с помощью <T extends ICommon>
в универсальном методе, бесполезен, поскольку его нет в списке параметров.
Может быть, то, что вы, вероятно, хотите, не является универсальным методом.Но что-то следующее:
interface IStorage {
public Collection<? extends ICommon> find(String name, boolean isExact);
}
//and
class Storage implements IStorage {
public Collection<IOrganization> find(String name, boolean isExact) {
//some code
}
}
//or
class Storage implements IStorage {
public Collection<? extends ICommon> find(String name, boolean isExact) {
//some code
}
}