2012-02-01 45 views
0

在我的代码中,我得到了printer1类型作为接口(IPrinter)类型,但我实际上希望它作为打印机类类型。通过java反射在另一个类中的接口声明的对象的访问方法

在JavaReflectionTrial.accessPrinter()我有2个给插槽参数不是打印机

是有可能在JavaReflectionTrial获得打印机的打印机对象。

interface IPrinter { 
    void enable(); 
} 

class Printer implements Iprinter { 
    void enable() { 
    //doSomething; 
    } 
} 

class Slot { 
    public IPrinter printer1 = new Printer(); 
} 

class JavaReflectionTrial { 
    accessPrinter(Slot slot) { 
    class cls=slot.getclass(); 
    field[] fields=cls.getfields(); 
    } 
} 

回答

0

如果你有Slot对象,并通过反射你想在其printer1成员变量,你应该能够做到这一点是这样的:

Class<?> cls = slot.getClass(); 
Field field = cls.getDeclaredField("printer1"); 

// Get the value of the printer1 member variable in slot 
Printer printer = (Printer)field.get(slot); 
+0

现在我明白了谢谢 – 2012-02-01 14:33:49

0

由于在打印机场插槽是公开的,您应该能够以正常方式获取实例。 (slot.printer1)

+0

实际上我想要2访问打印机在运行时,所以只有我米使用反射 – 2012-02-01 14:21:42

相关问题