stringconstant.java

来自「proguard 一个java的混淆器」· Java 代码 · 共 128 行

JAVA
128
字号
/* * ProGuard -- shrinking, optimization, obfuscation, and preverification *             of Java bytecode. * * Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu) * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */package proguard.classfile.constant;import proguard.classfile.*;import proguard.classfile.constant.visitor.ConstantVisitor;import proguard.classfile.visitor.*;/** * This Constant represents a string constant in the constant pool. * * @author Eric Lafortune */public class StringConstant extends Constant{    public int u2stringIndex;    /**     * An extra field pointing to the referenced Clazz object, if this     * string is being used in Class.forName(), .class, or     * Class.getDeclaredField/Method constructs.     * This field is typically filled out by the <code>{@link     * proguard.classfile.util.DynamicClassReferenceInitializer     * DynamicClassReferenceInitializer}</code> or by the <code>{@link     * proguard.classfile.util.DynamicMemberReferenceInitializer     * DynamicMemberReferenceInitializer}</code>.     */    public Clazz referencedClass;    /**     * An extra field pointing to the referenced Member object, if this     * string is being used in Class.getDeclaredField/Method constructs.     * This field is typically filled out by the <code>{@link     * proguard.classfile.util.DynamicMemberReferenceInitializer     * DynamicMemberReferenceInitializer}</code>.     */    public Member referencedMember;    /**     * Creates an uninitialized StringConstant.     */    public StringConstant()    {    }    /**     * Creates a new StringConstant with the given string index.     * @param u2stringIndex   the index of the string in the constant pool.     * @param referencedClass the referenced class, if any.     * @param referenceMember the referenced class member, if any.     */    public StringConstant(int    u2stringIndex,                          Clazz  referencedClass,                          Member referenceMember)    {        this.u2stringIndex    = u2stringIndex;        this.referencedClass  = referencedClass;        this.referencedMember = referenceMember;    }    /**     * Returns the string value.     */    public String getString(Clazz clazz)    {        return clazz.getString(u2stringIndex);    }    // Implementations for Constant.    public int getTag()    {        return ClassConstants.CONSTANT_String;    }    public void accept(Clazz clazz, ConstantVisitor constantVisitor)    {        constantVisitor.visitStringConstant(clazz, this);    }    /**     * Lets the referenced class accept the given visitor.     */    public void referencedClassAccept(ClassVisitor classVisitor)    {        if (referencedClass  != null &&            referencedMember == null)        {            referencedClass.accept(classVisitor);        }    }    /**     * Lets the referenced member accept the given visitor.     */    public void referencedMemberAccept(MemberVisitor memberVisitor)    {        if (referencedMember != null)        {            referencedMember.accept(referencedClass, memberVisitor);        }    }}

⌨️ 快捷键说明

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