亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? classreader.java

?? Xfire文件 用于開發(fā)web service 的一個開源工具 很好用的
?? JAVA
字號:
/* * Copyright 2002-2004 The Apache Software Foundation. *  * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *  *      http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.codehaus.xfire.util;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.EOFException;import java.io.IOException;import java.io.InputStream;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Member;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;/** * This is the class file reader for obtaining the parameter names * for declared methods in a class.  The class must have debugging * attributes for us to obtain this information. <p> * * This does not work for inherited methods.  To obtain parameter * names for inherited methods, you must use a paramReader for the * class that originally declared the method. <p> * * don't get tricky, it's the bare minimum.  Instances of this class * are not threadsafe -- don't share them. <p> * * @author Edwin Smith, Macromedia */public class ClassReader extends ByteArrayInputStream {    // constants values that appear in java class files,    // from jvm spec 2nd ed, section 4.4, pp 103    private static final int CONSTANT_Class = 7;    private static final int CONSTANT_Fieldref = 9;    private static final int CONSTANT_Methodref = 10;    private static final int CONSTANT_InterfaceMethodref = 11;    private static final int CONSTANT_String = 8;    private static final int CONSTANT_Integer = 3;    private static final int CONSTANT_Float = 4;    private static final int CONSTANT_Long = 5;    private static final int CONSTANT_Double = 6;    private static final int CONSTANT_NameAndType = 12;    private static final int CONSTANT_Utf8 = 1;    /**     * the constant pool.  constant pool indices in the class file     * directly index into this array.  The value stored in this array     * is the position in the class file where that constant begins.     */    private int[] cpoolIndex;    private Object[] cpool;    private Map attrMethods;    /**     * load the bytecode for a given class, by using the class's defining     * classloader and assuming that for a class named P.C, the bytecodes are     * in a resource named /P/C.class.     * @param c the class of interest     * @return a byte array containing the bytecode     * @throws IOException     */    protected static byte[] getBytes(Class c) throws IOException {        InputStream fin = c.getResourceAsStream('/' + c.getName().replace('.', '/') + ".class");        if (fin == null) {            throw new IOException(                    //Messages.getMessage("cantLoadByecode", c.getName())                    );        }        try {            ByteArrayOutputStream out = new ByteArrayOutputStream();            byte[] buf = new byte[1024];            int actual;            do {                actual = fin.read(buf);                if (actual > 0) {                    out.write(buf, 0, actual);                }            } while (actual > 0);            return out.toByteArray();        } finally {            fin.close();        }    }    static String classDescriptorToName(String desc) {        return desc.replace('/', '.');    }    protected static Map findAttributeReaders(Class c) {        HashMap map = new HashMap();        Method[] methods = c.getMethods();        for (int i = 0; i < methods.length; i++) {            String name = methods[i].getName();            if (name.startsWith("read") && methods[i].getReturnType() == void.class) {                map.put(name.substring(4), methods[i]);            }        }        return map;    }    protected static String getSignature(Member method, Class[] paramTypes) {        // compute the method descriptor        StringBuffer b = new StringBuffer((method instanceof Method) ? method.getName() : "<init>");        b.append('(');        for (int i = 0; i < paramTypes.length; i++) {            addDescriptor(b, paramTypes[i]);        }        b.append(')');        if (method instanceof Method) {            addDescriptor(b, ((Method) method).getReturnType());        } else if (method instanceof Constructor) {            addDescriptor(b, void.class);        }        return b.toString();    }    private static void addDescriptor(StringBuffer b, Class c) {        if (c.isPrimitive()) {            if (c == void.class)                b.append('V');            else if (c == int.class)                b.append('I');            else if (c == boolean.class)                b.append('Z');            else if (c == byte.class)                b.append('B');            else if (c == short.class)                b.append('S');            else if (c == long.class)                b.append('J');            else if (c == char.class)                b.append('C');            else if (c == float.class)                b.append('F');            else if (c == double.class) b.append('D');        } else if (c.isArray()) {            b.append('[');            addDescriptor(b, c.getComponentType());        } else {            b.append('L').append(c.getName().replace('.', '/')).append(';');        }    }    /**     * @return the next unsigned 16 bit value     */    protected final int readShort() {        return (read() << 8) | read();    }    /**     * @return the next signed 32 bit value     */    protected final int readInt() {        return (read() << 24) | (read() << 16) | (read() << 8) | read();    }    /**     * skip n bytes in the input stream.     */    protected void skipFully(int n) throws IOException {        while (n > 0) {            int c = (int) skip(n);            if (c <= 0)                throw new EOFException();//(Messages.getMessage("unexpectedEOF00"));            n -= c;        }    }    protected final Member resolveMethod(int index) throws IOException, ClassNotFoundException, NoSuchMethodException {        int oldPos = pos;        try {            Member m = (Member) cpool[index];            if (m == null) {                pos = cpoolIndex[index];                Class owner = resolveClass(readShort());                NameAndType nt = resolveNameAndType(readShort());                String signature = nt.name + nt.type;                if (nt.name.equals("<init>")) {                    Constructor[] ctors = owner.getConstructors();                    for (int i = 0; i < ctors.length; i++) {                        String sig = getSignature(ctors[i], ctors[i].getParameterTypes());                        if (sig.equals(signature)) {                            cpool[index] = m = ctors[i];                            return m;                        }                    }                } else {                    Method[] methods = owner.getDeclaredMethods();                    for (int i = 0; i < methods.length; i++) {                        String sig = getSignature(methods[i], methods[i].getParameterTypes());                        if (sig.equals(signature)) {                            cpool[index] = m = methods[i];                            return m;                        }                    }                }                throw new NoSuchMethodException(signature);            }            return m;        } finally {            pos = oldPos;        }    }    protected final Field resolveField(int i) throws IOException, ClassNotFoundException, NoSuchFieldException {        int oldPos = pos;        try {            Field f = (Field) cpool[i];            if (f == null) {                pos = cpoolIndex[i];                Class owner = resolveClass(readShort());                NameAndType nt = resolveNameAndType(readShort());                cpool[i] = f = owner.getDeclaredField(nt.name);            }            return f;        } finally {            pos = oldPos;        }    }    private static class NameAndType {        String name;        String type;        public NameAndType(String name, String type) {            this.name = name;            this.type = type;        }    }    protected final NameAndType resolveNameAndType(int i) throws IOException {        int oldPos = pos;        try {            NameAndType nt = (NameAndType) cpool[i];            if (nt == null) {                pos = cpoolIndex[i];                String name = resolveUtf8(readShort());                String type = resolveUtf8(readShort());                cpool[i] = nt = new NameAndType(name, type);            }            return nt;        } finally {            pos = oldPos;        }    }    protected final Class resolveClass(int i) throws IOException, ClassNotFoundException {        int oldPos = pos;        try {            Class c = (Class) cpool[i];            if (c == null) {                pos = cpoolIndex[i];                String name = resolveUtf8(readShort());                cpool[i] = c = Class.forName(classDescriptorToName(name));            }            return c;        } finally {            pos = oldPos;        }    }    protected final String resolveUtf8(int i) throws IOException {        int oldPos = pos;        try {            String s = (String) cpool[i];            if (s == null) {                pos = cpoolIndex[i];                int len = readShort();                skipFully(len);                cpool[i] = s = new String(buf, pos - len, len, "utf-8");            }            return s;        } finally {            pos = oldPos;        }    }    protected final void readCpool() throws IOException {        int count = readShort(); // cpool count        cpoolIndex = new int[count];        cpool = new Object[count];        for (int i = 1; i < count; i++) {            int c = read();            cpoolIndex[i] = super.pos;            switch (c) // constant pool tag            {                case CONSTANT_Fieldref:                case CONSTANT_Methodref:                case CONSTANT_InterfaceMethodref:                case CONSTANT_NameAndType:                    readShort(); // class index or (12) name index                    // fall through                case CONSTANT_Class:                case CONSTANT_String:                    readShort(); // string index or class index                    break;                case CONSTANT_Long:                case CONSTANT_Double:                    readInt(); // hi-value                    // see jvm spec section 4.4.5 - double and long cpool                    // entries occupy two "slots" in the cpool table.                    i++;                    // fall through                case CONSTANT_Integer:                case CONSTANT_Float:                    readInt(); // value                    break;                case CONSTANT_Utf8:                    int len = readShort();                    skipFully(len);                    break;                default:                    // corrupt class file                    throw new IllegalStateException(                            //Messages.getMessage("unexpectedBytes00")                            );            }        }    }    protected final void skipAttributes() throws IOException {        int count = readShort();        for (int i = 0; i < count; i++) {            readShort(); // name index            skipFully(readInt());        }    }    /**     * read an attributes array.  the elements of a class file that     * can contain attributes are: fields, methods, the class itself,     * and some other types of attributes.     */    protected final void readAttributes() throws IOException {        int count = readShort();        for (int i = 0; i < count; i++) {            int nameIndex = readShort(); // name index            int attrLen = readInt();            int curPos = pos;            String attrName = resolveUtf8(nameIndex);            Method m = (Method) attrMethods.get(attrName);            if (m != null) {                try {                    m.invoke(this, new Object[]{});                } catch (IllegalAccessException e) {                    pos = curPos;                    skipFully(attrLen);                } catch (InvocationTargetException e) {                    try {                        throw e.getTargetException();                    } catch (Error ex) {                        throw ex;                    } catch (RuntimeException ex) {                        throw ex;                    } catch (IOException ex) {                        throw ex;                    } catch (Throwable ex) {                        pos = curPos;                        skipFully(attrLen);                    }                }            } else {                // don't care what attribute this is                skipFully(attrLen);            }        }    }    /**     * read a code attribute     * @throws IOException     */    public void readCode() throws IOException {        readShort(); // max stack        readShort(); // max locals        skipFully(readInt()); // code        skipFully(8 * readShort()); // exception table        // read the code attributes (recursive).  This is where        // we will find the LocalVariableTable attribute.        readAttributes();    }    protected ClassReader(byte buf[], Map attrMethods) {        super(buf);        this.attrMethods = attrMethods;    }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图清纯唯美| 欧美日韩亚洲综合一区| 亚洲精品日韩一| 日韩欧美第一区| 91女厕偷拍女厕偷拍高清| 日韩不卡一区二区| 日韩毛片一二三区| 精品久久久久久久久久久久久久久| 97精品国产露脸对白| 黄一区二区三区| 午夜成人免费电影| 亚洲免费在线观看| 国产亚洲综合在线| 91精品国产色综合久久久蜜香臀| 99久久er热在这里只有精品66| 久久精品国产亚洲高清剧情介绍| 亚洲精品v日韩精品| 2021中文字幕一区亚洲| 欧美日韩另类一区| 91久久精品一区二区三区| 国产麻豆精品一区二区| 日韩中文字幕区一区有砖一区 | 欧美日本视频在线| 97超碰欧美中文字幕| 高清不卡在线观看| 日韩av午夜在线观看| 一区二区三区四区在线| 国产精品第四页| 免费成人av在线| 亚洲一级二级三级在线免费观看| 国产精品国产馆在线真实露脸| 久久欧美一区二区| 在线电影一区二区三区| 欧美色综合网站| 色菇凉天天综合网| 色噜噜狠狠色综合欧洲selulu| 丁香婷婷深情五月亚洲| 亚洲国产精品二十页| eeuss鲁片一区二区三区在线观看| 毛片不卡一区二区| 亚洲成人久久影院| 一区二区三区不卡视频| 一区二区三区免费| 亚洲一区二区三区国产| 一区二区三区国产精华| 一区二区在线观看不卡| 一区二区三区美女视频| 亚洲激情一二三区| 亚洲最色的网站| 亚洲第一狼人社区| 日韩激情在线观看| 蜜臂av日日欢夜夜爽一区| 日韩成人一级片| 美女久久久精品| 精品一区二区三区香蕉蜜桃| 国产自产高清不卡| 国产馆精品极品| 不卡视频在线观看| 在线观看精品一区| 欧美肥大bbwbbw高潮| 日韩欧美一卡二卡| 91久久一区二区| 国产69精品久久99不卡| av一区二区三区四区| 色综合久久久久| 欧美三级日韩在线| 精品免费视频一区二区| 国产欧美日韩亚州综合| 亚洲视频图片小说| 亚洲国产裸拍裸体视频在线观看乱了| 日韩精品高清不卡| 国产一区二区三区电影在线观看| 国产精品一区二区在线看| 99久久久精品免费观看国产蜜| 在线观看网站黄不卡| 欧美成人午夜电影| 国产一本一道久久香蕉| 粉嫩av一区二区三区在线播放| 91免费观看视频| 在线播放中文字幕一区| 日本一区二区三区电影| 亚洲午夜精品一区二区三区他趣| 老司机精品视频一区二区三区| 成人黄色一级视频| 4438x成人网最大色成网站| 久久精品无码一区二区三区| 夜夜精品浪潮av一区二区三区| 久久99久久精品| 亚洲va欧美va人人爽午夜| 在线观看视频一区| 51精品久久久久久久蜜臀| 国产欧美一区二区精品性| 亚洲影视在线播放| 激情综合色丁香一区二区| 97精品久久久久中文字幕| 欧美不卡一区二区三区四区| 中文字幕亚洲精品在线观看| 免费视频最近日韩| 色综合天天在线| 2024国产精品视频| 亚洲成人免费看| av午夜一区麻豆| 精品国产三级a在线观看| 一区二区三区四区中文字幕| 国产成人午夜片在线观看高清观看| 欧日韩精品视频| 国产精品剧情在线亚洲| 91小宝寻花一区二区三区| 9191成人精品久久| 亚洲人成小说网站色在线| 韩国视频一区二区| 正在播放亚洲一区| 日韩码欧中文字| 粉嫩久久99精品久久久久久夜| 欧美一区二区精品在线| 亚洲国产成人av网| 99国产麻豆精品| 国产欧美一区二区精品性色 | 日韩免费高清av| 亚洲在线观看免费视频| 不卡区在线中文字幕| 日本一区二区三区视频视频| 精油按摩中文字幕久久| 日韩一区二区三区电影| 亚洲成人久久影院| 欧美影片第一页| 亚洲精品高清在线| 97久久久精品综合88久久| 免费人成精品欧美精品| 欧美在线观看18| 国产精品久久久久久久久久免费看 | 色综合久久久久久久久| 自拍偷拍亚洲欧美日韩| 国产精品系列在线观看| 欧美精品一区二区三区蜜桃 | 一本久道中文字幕精品亚洲嫩| 国产精品无码永久免费888| 国产成人精品免费在线| 久久一二三国产| 国产成人一区在线| 欧美国产欧美综合| 成人av网站在线| **网站欧美大片在线观看| 99re在线视频这里只有精品| 国产精品女同互慰在线看| 成人黄色电影在线 | 国产一区二区在线观看视频| 亚洲精品在线观| 国产精品美女一区二区三区| 日韩av二区在线播放| 宅男在线国产精品| 男女男精品网站| 精品毛片乱码1区2区3区| 韩国视频一区二区| 欧美激情一区二区三区| av亚洲精华国产精华精| 一区二区三区久久| 欧美一区二区三区白人| 久久97超碰国产精品超碰| 国产午夜精品久久久久久久| 97精品电影院| 视频一区视频二区中文字幕| 日韩欧美色电影| 国产69精品久久777的优势| 亚洲欧美日韩中文播放| 欧美日韩一区二区三区高清 | 亚洲国产wwwccc36天堂| 欧美精品久久久久久久久老牛影院| 麻豆成人免费电影| 精品国产3级a| 国产成人在线影院| 国产欧美日韩视频一区二区| 在线免费观看视频一区| 亚洲国产成人porn| 欧美α欧美αv大片| 不卡的av网站| 亚洲一区成人在线| 日韩三区在线观看| 国产日产精品一区| 国产激情视频一区二区在线观看| 国产精品免费aⅴ片在线观看| a在线播放不卡| av高清不卡在线| 中文字幕av一区二区三区免费看| 色综合一个色综合| 青青草97国产精品免费观看 | 亚洲卡通欧美制服中文| 色8久久精品久久久久久蜜| 久国产精品韩国三级视频| 国产午夜精品久久| 欧美午夜寂寞影院| 高清shemale亚洲人妖| 亚洲女人****多毛耸耸8| 欧美日韩mp4| 福利一区二区在线观看| 日韩高清在线电影| 国产亚洲人成网站| 欧美视频一区二区三区四区 | 日韩一级高清毛片| 国产精品系列在线播放|