I have interfaces:
package pl.some.app.package.one;
public interface Resolver<T extends Code> extends pl.some.app.package.two.Resolver {
}
package pl.some.app.package.two;
public interface Resolver<T extends Code> {
}
It's because 'one' was original, then it was moved to better package and in package one it stayed cause of backward compatibility. But it did not work for my ex co-workers and have a question now.
I'm using it in some old libraries like that:
import pl.some.app.package.one.Resolver;
public class Usage {
new ObjectOne(Resolver<Code> resolver);
}
New API looks like:
import pl.some.app.package.two.Resolver;
public class ObjectOne {
public ObjectOne(Resolver<Code> resolver){
this.resolver = resolver;
}
}
now I want to add another constructor to ObjectOne like that:
/**
* @deprecated use {@link #ObjectOne(Resolver<T>)} method
*/
@Deprecated
public ObjectOne(pl.some.app.package.one.Resolver<T> resolver){
this.resolver = resolver;
}
but its usability may become lower, cause coder would think twice, what Resolver should he use, even if the first one is deprecated. Changing class Usage is no option. I need it to be compatible with two applications, where I use the old libraries and the new ones.
Aucun commentaire:
Enregistrer un commentaire