Description of the issue:
Is it possible to let factory create an object depends on annotation defined at
left hand side?
At the moment I have 2 annotation types, A and B.
@Retention(RetentionPolicy.RUNTIME)
@BindingAnnotation
public @interface A {}
@Retention(RetentionPolicy.RUNTIME)
@BindingAnnotation
public @interface B {}
And interface and its implementation:
public interface ResultSet {}
public class ResultSetA implements ResultSet {}
public class ResultSetA implements ResultSet {}
I have a factory.
public interface ResultSetFactory {
@A
public ResultSet createResultSetA(String sql);
@B
public ResultSet createResultSetB(String sql);
}
And I setup the factory like this:
install(new FactoryModuleBuilder()
.implement(ResultSet.class, A.class, ResultSetA.class)
.implement(ResultSet.class, B.class, ResultSetB.class)
.build(ResultSetFactory.class));
However, I don't want to create methods everytime I have a new ResultSet(*).
So I want to change the factory to be:
public interface ResultSetFactory {
public ResultSet create(String sql);
}
And use the new factory like this:
@A ResultSet resultSetA = factory.create(sql);
@B ResultSet resultSetB = factory.create(sql);
...
...
So, my question is, is there any way to do like this?
Original issue reported on code.google.com by chatree.srichart@gmail.com on 4 Mar 2014 at 4:37
Original issue reported on code.google.com by
chatree.srichart@gmail.com
on 4 Mar 2014 at 4:37