|
|
|
|
|
|
|
*/ |
|
/* |
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
|
* contributor license agreements. See the NOTICE file distributed with |
|
* this work for additional information regarding copyright ownership. |
|
* The ASF licenses this file to You 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 com.sun.org.apache.bcel.internal.classfile; |
|
|
|
import java.io.DataInput; |
|
import java.io.IOException; |
|
|
|
import com.sun.org.apache.bcel.internal.Const; |
|
import com.sun.org.apache.bcel.internal.generic.Type; |
|
import com.sun.org.apache.bcel.internal.util.BCELComparator; |
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public final class Field extends FieldOrMethod { |
|
|
|
private static BCELComparator bcelComparator = new BCELComparator() { |
|
|
|
@Override |
|
public boolean equals( final Object o1, final Object o2 ) { |
|
final Field THIS = (Field) o1; |
|
final Field THAT = (Field) o2; |
|
return THIS.getName().equals(THAT.getName()) |
|
&& THIS.getSignature().equals(THAT.getSignature()); |
|
} |
|
|
|
|
|
@Override |
|
public int hashCode( final Object o ) { |
|
final Field THIS = (Field) o; |
|
return THIS.getSignature().hashCode() ^ THIS.getName().hashCode(); |
|
} |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public Field(final Field c) { |
|
super(c); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
Field(final DataInput file, final ConstantPool constant_pool) throws IOException, |
|
ClassFormatException { |
|
super(file, constant_pool); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
public Field(final int access_flags, final int name_index, final int signature_index, final Attribute[] attributes, |
|
final ConstantPool constant_pool) { |
|
super(access_flags, name_index, signature_index, attributes, constant_pool); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
@Override |
|
public void accept( final Visitor v ) { |
|
v.visitField(this); |
|
} |
|
|
|
|
|
|
|
|
|
*/ |
|
public final ConstantValue getConstantValue() { |
|
for (final Attribute attribute : super.getAttributes()) { |
|
if (attribute.getTag() == Const.ATTR_CONSTANT_VALUE) { |
|
return (ConstantValue) attribute; |
|
} |
|
} |
|
return null; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
@Override |
|
public final String toString() { |
|
String name; |
|
String signature; |
|
String access; |
|
|
|
|
|
access = Utility.accessToString(super.getAccessFlags()); |
|
access = access.isEmpty() ? "" : (access + " "); |
|
signature = Utility.signatureToString(getSignature()); |
|
name = getName(); |
|
final StringBuilder buf = new StringBuilder(64); |
|
buf.append(access).append(signature).append(" ").append(name); |
|
final ConstantValue cv = getConstantValue(); |
|
if (cv != null) { |
|
buf.append(" = ").append(cv); |
|
} |
|
for (final Attribute attribute : super.getAttributes()) { |
|
if (!(attribute instanceof ConstantValue)) { |
|
buf.append(" [").append(attribute).append("]"); |
|
} |
|
} |
|
return buf.toString(); |
|
} |
|
|
|
|
|
|
|
|
|
*/ |
|
public final Field copy( final ConstantPool _constant_pool ) { |
|
return (Field) copy_(_constant_pool); |
|
} |
|
|
|
|
|
|
|
|
|
*/ |
|
public Type getType() { |
|
return Type.getReturnType(getSignature()); |
|
} |
|
|
|
|
|
|
|
|
|
*/ |
|
public static BCELComparator getComparator() { |
|
return bcelComparator; |
|
} |
|
|
|
|
|
|
|
|
|
*/ |
|
public static void setComparator( final BCELComparator comparator ) { |
|
bcelComparator = comparator; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
@Override |
|
public boolean equals( final Object obj ) { |
|
return bcelComparator.equals(this, obj); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
@Override |
|
public int hashCode() { |
|
return bcelComparator.hashCode(this); |
|
} |
|
} |