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

📄 ctnewclass.java

📁 Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使
💻 JAVA
字号:
/* * Javassist, a Java-bytecode translator toolkit. * Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved. * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License.  Alternatively, the contents of this file may be used under * the terms of the GNU Lesser General Public License Version 2.1 or later. * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. */package javassist;import java.io.DataOutputStream;import java.io.IOException;import javassist.bytecode.ClassFile;class CtNewClass extends CtClassType {    /* true if the class is an interface.     */    protected boolean hasConstructor;    CtNewClass(String name, ClassPool cp,               boolean isInterface, CtClass superclass) {        super(name, cp);        wasChanged = true;        eraseCache();        String superName;        if (superclass == null)            superName = null;        else            superName = superclass.getName();        classfile = new ClassFile(isInterface, name, superName);        setModifiers(Modifier.setPublic(getModifiers()));        hasConstructor = isInterface;    }    protected void extendToString(StringBuffer buffer) {        if (hasConstructor)            buffer.append("hasConstructor ");        super.extendToString(buffer);    }    public void addConstructor(CtConstructor c)        throws CannotCompileException    {        hasConstructor = true;        super.addConstructor(c);    }    public void toBytecode(DataOutputStream out)        throws CannotCompileException, IOException    {        if (!hasConstructor)            try {                inheritAllConstructors();                hasConstructor = true;            }            catch (NotFoundException e) {                throw new CannotCompileException(e);            }        super.toBytecode(out);    }    /**     * Adds constructors inhrited from the super class.     *     * <p>After this method is called, the class inherits all the     * constructors from the super class.  The added constructor     * calls the super's constructor with the same signature.     */    public void inheritAllConstructors()        throws CannotCompileException, NotFoundException    {        CtClass superclazz;        CtConstructor[] cs;        superclazz = getSuperclass();        cs = superclazz.getDeclaredConstructors();        int n = 0;        for (int i = 0; i < cs.length; ++i) {            CtConstructor c = cs[i];            if (Modifier.isPublic(c.getModifiers())) {                CtConstructor cons                    = CtNewConstructor.make(c.getParameterTypes(),                                            c.getExceptionTypes(), this);                addConstructor(cons);                ++n;            }        }        if (n < 1)            throw new CannotCompileException(                        "no public constructor in " + superclazz.getName());    }}

⌨️ 快捷键说明

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