我刚刚听说鸭子打字,我读了关于它的维基百科文章,但是我很难将这些例子翻译成Java,这真的有助于我理解.
是否有人能够给出一个明确的Java打字输入示例以及我可能如何使用它?
Rob*_*anu 43
Java的设计不适合鸭子打字.您可能选择这样做的方式是反思:
public void doSomething(Object obj) throws Exception {
obj.getClass().getMethod("getName", new Class<?>[] {}).invoke(obj);
}
Run Code Online (Sandbox Code Playgroud)
但是我会提倡用动态语言来实现它,例如Groovy,它更有意义:
class Duck {
quack() { println "I am a Duck" }
}
class Frog {
quack() { println "I am a Frog" }
}
quackers = [ new Duck(), new Frog() ]
for (q in quackers) {
q.quack()
}
Run Code Online (Sandbox Code Playgroud)
interface MyInterface {
void foo();
int bar(int x, int y);
int baz(int x);
}
public class Delegate {
public int bar() {
return 42;
}
}
DuckPrxy duckProxy = new DuckPrxyImpl();
MyInterface prxy = duckProxy.makeProxy(MyInterface.class, new Delegate());
prxy.bar(2, 3); // Will return 42.
Run Code Online (Sandbox Code Playgroud)
使用动态代理,使用接口鸭子输入很简单,您应该匹配方法名称和返回类型.
| 归档时间: |
|
| 查看次数: |
17116 次 |
| 最近记录: |