2 回答

TA貢獻56條經(jīng)驗 獲得超455個贊
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class HelloWorld{
? ? ?public static void main(String []args){
? ? ? ? final Dog dog = new Dog();
? ? ? ? SingleMan man = (SingleMan) Proxy.newProxyInstance(SingleMan.class.getClassLoader(), new Class[]{SingleMan.class}, new InvocationHandler() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
? ? ? ? ? ? ? ? Method m = dog.getClass().getMethod(method.getName(), method.getParameterTypes());
? ? ? ? ? ? ? ? Object result = m.invoke(dog, args);
? ? ? ? ? ? ? ? return result;
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? man.say();
? ? ?}
? ? ?
? ? public static class Dog {
? ? ? ? public void say() {
? ? ? ? ? ? System.out.println("汪!汪!");
? ? ? ? }
? ? }
? ? public ?interface SingleMan {
? ? ? ? void say();
? ? }
}

TA貢獻41條經(jīng)驗 獲得超61個贊
Java其實一直有黑魔法的,至少目前為止這套API還沒有被干掉,如果你還沒聽過,不妨去搜一下sun.misc.Unsafe
比如最簡單的,你可以把checked exception當成runtime exception來用。
getUnsafe().throwException(new?IOException());
添加回答
舉報