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

📄 hiddeninheritedfieldcheck.java

📁 Checkstyle 可寻找:·不能使用的或者多余的输入 ·空格更好的地方不使用跳格符
💻 JAVA
字号:
//Tested with BCEL-5.1
//http://jakarta.apache.org/builds/jakarta-bcel/release/v5.1/

package com.puppycrawl.tools.checkstyle.bcel.checks;

import org.apache.bcel.classfile.Field;
import org.apache.bcel.classfile.JavaClass;
import com.puppycrawl.tools.checkstyle.api.Scope;
import com.puppycrawl.tools.checkstyle.bcel.ReferenceVisitor;

/**
 * Checks for fields that hide fields in superclasses
 * @author Daniel Grenner
 */
public class HiddenInheritedFieldCheck
    extends AbstractReferenceCheck
{
    /** @see AbstractReferenceCheck */
    public void setScope(String aFrom)
    {
        super.setScope(aFrom);
        ((ReferenceVisitor) getVisitor()).addFieldScope(
            Scope.getInstance(aFrom));
    }

    /** @see com.puppycrawl.tools.checkstyle.bcel.IObjectSetVisitor */
    public void visitObject(Object aJavaClass)
    {
        final JavaClass javaClass = (JavaClass) aJavaClass;
        final String className = javaClass.getClassName();
        final JavaClass[] superClasses = javaClass.getSuperClasses();
        final Field[] fields = javaClass.getFields();
        // Check all fields
        for (int i = 0; i < fields.length; i++) {
            final Field field = fields[i];
            // Go through all superclasses
            for (int j = 0; j < superClasses.length; j++) {
                final JavaClass superClass = superClasses[j];
                final String superClassName = superClass.getClassName();
                final Field[] superClassFields = superClass.getFields();
                // Go through the filds of the superclasses
                for (int k = 0; k < superClassFields.length; k++) {
                    final Field superClassField = superClassFields[k];
                    if (!superClassField.isPrivate() &&
                        superClassField.getName().equals(field.getName()) &&
                        !ignore(className, field)) {
                        log(
                            javaClass,
                            0,
                            "hidden.inherited.field",
                            new Object[] {fields[i], superClassName});
                    }
                }
            }
        }
    }

    /** @see AbstractReferenceCheck */
    public boolean ignore(String aClassName, Field aField) {
        final String fieldName = aField.toString();
        return (/*super.ignore(aClassName, aField)
                || */fieldName.indexOf("[Synthetic]") > -1);
    }
}

⌨️ 快捷键说明

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