gpt4 book ai didi

没有目标对象的 Java 动态代理?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:36:51 24 4
gpt4 key购买 nike

奇怪的问题...

如何在没有目标对象的情况下使用 Java 的调用拦截器,就像使用动态代理一样?

例如,我想创建一个 super 对象,它可以代表运行时指定的十几个接口(interface),而不必需要一个实现其中任何接口(interface)的对象。

基本上这会像大多数动态语言中的 __call 功能一样工作。

想法?

最佳答案

也许我误解了这个问题(如果是这样请告诉我!)但这会让你开始吗?

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Arrays;

public class Main
{
public static void main(final String[] argv)
{
final Object object;
final InvocationHandler handler;
final Runnable runnable;
final Comparable<Object> comparable;


handler = new InvocationHandler()
{
public Object invoke(final Object proxy,
final Method method,
final Object[] args)
throws Throwable
{
System.out.println(proxy.getClass());
System.out.println(method);
System.out.println(Arrays.toString(args));
return (0);
}
};

object = Proxy.newProxyInstance(Main.class.getClassLoader(),
new Class[] {
Runnable.class,
Comparable.class,
},
handler);

runnable = (Runnable)object;
runnable.run();

comparable = (Comparable<Object>)object;
comparable.compareTo("Hello");
}
}

关于没有目标对象的 Java 动态代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/688134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com