selectormap.java

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

JAVA
54
字号
/*
 * $Id: SelectorMap.java,v 1.2 2004/02/15 11:06:18 epr Exp $
 */
package org.jnode.vm.classmgr;

import org.jnode.util.BootableHashMap;
import org.jnode.vm.VmSystemObject;

/**
 * This class is used to maintain a mapping between a method signature (name+type)
 * and a unique selector.
 * 
 * @author epr
 */
public class SelectorMap extends VmSystemObject {

	private final BootableHashMap map = new BootableHashMap(8192);
	private int lastSelector = 1;
	
	/**
	 * Gets the selector for a given name & type
	 * @param name
	 * @param signature
	 * @return The global unique selector
	 */
	public int get(String name, String signature) {
		final String id = name + '#' + signature;
		final Integer selector = (Integer)map.get(id);
		if (selector != null) {
			return selector.intValue();
		} else {
			return getNew(id);
		}
	}

	/**
	 * Get was not able to get a selector, do a synchronized test
	 * and create a new selector if needed.
	 * 
	 * @param id
	 * @return The selector
	 */
	private synchronized int getNew(String id) {
		Integer selector = (Integer)map.get(id);
		if (selector != null) {
			return selector.intValue();
		} else {
		    final int sel = ++lastSelector;
			map.put(id, new Integer(sel));
			return sel;
		}
	}
}

⌨️ 快捷键说明

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