vmconstfieldref.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 70 行

JAVA
70
字号
/**
 * $Id: VmConstFieldRef.java,v 1.5 2004/02/24 08:04:15 epr Exp $
 */
package org.jnode.vm.classmgr;


/**
 * Entry of a constantpool describing a field reference.
 * 
 * @author Ewout Prangsma (ewout@users.sourceforge.net)
 */
public class VmConstFieldRef extends VmConstMemberRef  {

	/** The reference to the resolved field */
	private VmField vmResolvedField;

	/**
	 * Constructor for VmFieldRef.
	 * @param cp
	 * @param classIndex
	 * @param nameTypeIndex
	 */
	public VmConstFieldRef(VmCP cp, int classIndex, int nameTypeIndex) {
		super(cp, classIndex, nameTypeIndex);
	}

	/**
	 * Resolve the references of this constant to loaded VmXxx objects.
	 * @param clc
	 */
	protected void doResolveMember(VmClassLoader clc) {
		VmType vmClass = getConstClass().getResolvedVmClass();
		vmResolvedField = vmClass.getField(getName());	
		if (vmResolvedField == null) {
			throw new NoSuchFieldError(toString() + " in class " + getClassName());
		}
	}
	
	/**
	 * Returns the resolved field.
	 * @return VmField
	 */
	public VmField getResolvedVmField() {
		if (vmResolvedField == null) {
			throw new NotResolvedYetException("vmField is not yet resolved");
		} else {
			return vmResolvedField;
		}
	}
	
	/**
	 * Sets the resolved vmField. If the resolved vmField was already set, any
	 * call to this method is silently ignored.
	 * @param vmField The vmField to set
	 */
	public void setResolvedVmField(VmField vmField) {
		if (this.vmResolvedField == null) {
			this.vmResolvedField = vmField;
		}
	}

	/**
	 * Is this a field of double width (double, long)
	 * @return boolean
	 */
	public boolean isWide() {
		return Modifier.isWide(getSignature());
	}
}

⌨️ 快捷键说明

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