📄 serializablemethod.java
字号:
/* SerializableMethod.java{{IS_NOTE Purpose: Description: History: Wed Jun 21 17:57:05 2006, Created by tomyeh}}IS_NOTECopyright (C) 2006 Potix Corporation. All Rights Reserved.{{IS_RIGHT}}IS_RIGHT*/package org.zkoss.lang.reflect;import java.lang.reflect.Method;import java.io.Serializable;import java.io.ObjectOutputStream;import java.io.ObjectInputStream;import java.io.IOException;import org.zkoss.lang.Objects;import org.zkoss.lang.SystemException;/** * A wrapper of java.lang.reflect.Method to make it serializable. * * @author tomyeh */public class SerializableMethod implements Serializable, Cloneable { private static final long serialVersionUID = 20060622L; private transient Method _m; public SerializableMethod(Method method) { _m = method; } /** Returns the method being encapsulated. */ public final Method getMethod() { return _m; } //Serializable// //NOTE: they must be declared as private private synchronized void writeObject(ObjectOutputStream s) throws IOException { s.defaultWriteObject(); if (_m == null) { s.writeObject(null); } else { s.writeObject(_m.getDeclaringClass()); s.writeObject(_m.getName()); final Class[] argTypes = _m.getParameterTypes(); s.writeInt(argTypes.length); for (int j = 0; j < argTypes.length; ++j) s.writeObject(argTypes[j]); } } private synchronized void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { s.defaultReadObject(); final Class cls = (Class)s.readObject(); if (cls != null) { final String nm = (String)s.readObject(); final int sz = s.readInt(); final Class[] argTypes = new Class[sz]; for (int j = 0; j < sz; ++j) argTypes[j] = (Class)s.readObject(); try { _m = cls.getMethod(nm, argTypes); } catch (NoSuchMethodException ex) { throw new SystemException("Method not found: "+nm+" with "+Objects.toString(argTypes)); } } } //-- cloneable --// public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException e) { throw new InternalError(); } } //Object// public int hashCode() { return Objects.hashCode(_m); } public boolean equals(Object o) { return (o instanceof SerializableMethod) && Objects.equals(_m, ((SerializableMethod)o)._m); } public String toString() { return Objects.toString(_m); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -