⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classfile.java

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 JAVA
字号:
// Copyright (c) Corporation for National Research Initiativespackage org.python.compiler;import java.util.*;import java.io.*;class Method{    int access, name, type;    Attribute[] atts;    public Method(int name, int type, int access, Attribute[] atts) {        this.name = name;        this.type = type;        this.access = access;        this.atts = atts;    }    public void write(DataOutputStream stream) throws IOException {        stream.writeShort(access);        stream.writeShort(name);        stream.writeShort(type);        ClassFile.writeAttributes(stream, atts);    }}public class ClassFile{    ConstantPool pool;    int access;    public String name;    String superclass;    int[] interfaces;    Vector methods;    Vector fields;    Vector attributes;    public final static int PUBLIC = 0x1;    public final static int PRIVATE = 0x2;    public final static int PROTECTED = 0x4;    public final static int STATIC = 0x8;    public final static int FINAL = 0x10;    public final static int SYNCHRONIZED = 0x20;    public final static int NATIVE = 0x100;    public final static int ABSTRACT = 0x400;    public static String fixName(String n) {        if (n.indexOf('.') == -1)            return n;        char[] c = n.toCharArray();        for(int i=0; i<c.length; i++) {            if (c[i] == '.') c[i] = '/';        }        return new String(c);    }    public ClassFile(String name) {        this(name, "java/lang/Object", SYNCHRONIZED | PUBLIC);    }    public ClassFile(String name, String superclass, int access) {        this.name = fixName(name);        this.superclass = fixName(superclass);        this.interfaces = new int[0];        this.access = access;        pool = new ConstantPool();        methods = new Vector();        fields = new Vector();        attributes = new Vector();    }    public void addInterface(String name) throws IOException {        int[] new_interfaces = new int[interfaces.length+1];        System.arraycopy(interfaces, 0, new_interfaces, 0, interfaces.length);        new_interfaces[interfaces.length] = pool.Class(name);        interfaces = new_interfaces;    }    public Code addMethod(String name, String type, int access)        throws IOException    {        Code code = new Code(type, pool, (access & STATIC) == STATIC);        Method m = new Method(pool.UTF8(name), pool.UTF8(type), access,                              new Attribute[] {code});        methods.addElement(m);        return code;    }    public void addField(String name, String type, int access)        throws IOException    {        Method m = new Method(pool.UTF8(name), pool.UTF8(type), access,                              new Attribute[0]);        fields.addElement(m);    }    public static void writeAttributes(DataOutputStream stream,                                       Attribute[] atts)        throws IOException    {        stream.writeShort(atts.length);        for (int i=0; i<atts.length; i++) {            atts[i].write(stream);        }    }    public void writeMethods(DataOutputStream stream, Vector methods)        throws IOException    {        stream.writeShort(methods.size());        for (int i=0; i<methods.size(); i++) {            Method m = (Method)methods.elementAt(i);            m.write(stream);        }    }    public void addAttribute(Attribute attr) throws IOException {        attributes.addElement(attr);    }    public void write(DataOutputStream stream) throws IOException {        //Write Header        int thisclass = pool.Class(name);        int superclass = pool.Class(this.superclass);        stream.writeInt(0xcafebabe);        stream.writeShort(0x3);        stream.writeShort(0x2d);        pool.write(stream);        stream.writeShort(access);        stream.writeShort(thisclass);        stream.writeShort(superclass);        //write out interfaces        stream.writeShort(interfaces.length);        for (int i=0; i<interfaces.length; i++)            stream.writeShort(interfaces[i]);        writeMethods(stream, fields);        writeMethods(stream, methods);        //write out class attributes        int n = attributes.size();        stream.writeShort(n);        for (int i=0; i<n; i++) {            ((Attribute)attributes.elementAt(i)).write(stream);        }    }    public void write(OutputStream stream) throws IOException {        write(new DataOutputStream(stream));    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -