Java 获取GUI中接口的实现类型
我正在使用Guice 3进行依赖项注入Java 获取GUI中接口的实现类型,java,dependency-injection,guice-3,Java,Dependency Injection,Guice 3,我正在使用Guice 3进行依赖项注入 我有一个特殊的用例,我需要知道什么样的实现类型已经绑定到接口。Guice是否有一种机制允许我们这样做?为此,Guice提供了扩展SPI 您需要扩展DefaultBindingTargetVisitor(如果您希望覆盖选择性方法)并覆盖您希望检查的访问(绑定绑定) public class MyBindingsVisitor extends DefaultBindingTargetVisitor<Object, String>{ pub
我有一个特殊的用例,我需要知道什么样的实现类型已经绑定到接口。Guice是否有一种机制允许我们这样做?为此,Guice提供了扩展SPI 您需要扩展DefaultBindingTargetVisitor(如果您希望覆盖选择性方法)并覆盖您希望检查的访问(绑定绑定)
public class MyBindingsVisitor extends DefaultBindingTargetVisitor<Object, String>{
public String visit(InstanceBinding<? extends Object> binding){
Key<? extends Object> key = binding.getKey();
System.out.println("Key :" + key.getTypeLiteral());
System.out.println("Annotation : " + key.getAnnotation());
System.out.println("Source : " + binding.getSource());
System.out.println("Instance : "+binding.getInstance().toString());
return visitOther(binding);
}
}
公共类MyBindingsVisitor扩展了DefaultBindingTargetVisitor{
公共字符串访问(InstanceBinding:injector.getBindings().values()){
System.out.println(binding.acceptTargetVisitor(新的MyBindingsVisitor());
}
这些绑定是完整的绑定,因此被称为注入器绑定。.getClass().getName()?…但是,有点违背依赖项注入原则…我做不到。getClass()因为我甚至没有试图找到其类的对象的实例。我想我可以实例化一个模拟实例,然后这样做。我还意识到它面临依赖注入。但我需要这样才能在hadoop中将类信息正确写入序列文件。
for(Binding<?> binding : injector.getBindings().values()){
System.out.println(binding.acceptTargetVisitor(new MyBindingsVisitor()));
}