entityholder.java

来自「Java mulitplayer strategy game. Adaptati」· Java 代码 · 共 73 行

JAVA
73
字号
package net.sf.jawp.gf.api;

import java.io.Serializable;

/**
 * Simple wrapper over entity.
 * It stores entity's key and entity alone as transient value
 * 
 * It means that after serialization/deseriaization 
 * there is only key left and entity's data must be "somewhere else"
 * 
 * Use this type in communication methods to avoid network  overhead
 * if it is only known that instead of whole object data key is enough
 *  (for instance: data was already sent)	
 * 
 * @author jarek
 * @version $Revision: 1.7 $
 *
 * @param <T> entity type for this wrapper
 */
public final class EntityHolder<T extends Entity>
implements Serializable
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private final long key;

	private transient T entity;

	public EntityHolder(final T entity)
	{
		this.key = entity.getKey();
		this.entity = entity;
	}

	public T getEntity(final Resolver<T> entityResolver)
	{
		if (this.entity == null)
		{
			this.entity = entityResolver.find(getKey());
		}
		return this.entity;
	}

	public long getKey()
	{
		return this.key;
	}
	
	public int hashCode()
	{
		 return (int)(this.key ^ (key >>> 32));
	}
	
	public boolean equals(final Object o)
	{
		if ( o == this)
		{
			return true;
		}
		return this.equals( (EntityHolder<?>)o);
	}
	
	public boolean equals(final EntityHolder<?> o)
	{
		return o.getKey() == this.getKey();
	}
	
}

⌨️ 快捷键说明

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