| /* |
| * $Id: TypedJavaObject.java,v 1.1 2008/10/28 16:36:48 anaef Exp $ |
| * See LICENSE.txt for license terms. |
| */ |
| |
| package com.naef.jnlua; |
| |
| /** |
| * Represents a Java object with an explicit type. |
| * |
| * <p> |
| * The interface is implemented by objects needing to specify an explicit type |
| * for a wrapped object. This typically occurs in casting situations. Such typed |
| * Java object are considered <i>weak</i> since they have no representative |
| * value of their own. Weak typed Java objects always convert to wrapped object. |
| * </p> |
| * |
| * <p> |
| * The interface is also implemented by objects wrapping another object and |
| * offering transparent conversion to the wrapped object if needed. This |
| * situation for example occurs when an object implements the |
| * {@link com.naef.jnlua.JavaReflector} interface to provide custom Java |
| * reflection for a wrapped object and at the same time wants to ensure |
| * transparent conversion to the wrapped object if needed. Such typed Java |
| * objects are considered <i>strong</i> since they have a representative value |
| * of their own. Strong typed Java objects convert to wrapped object only if |
| * this is required to satisfy a type conversion. |
| * </p> |
| */ |
| public interface TypedJavaObject { |
| /** |
| * Returns the object. |
| * |
| * @return the object |
| */ |
| public Object getObject(); |
| |
| /** |
| * Returns the type. |
| * |
| * @return the type |
| */ |
| public Class<?> getType(); |
| |
| /** |
| * Returns whether this is a strong typed Java object. |
| * |
| * @return <code>true</code> if this typed Java object is strong, and |
| * <code>false</code> if it is weak |
| */ |
| public boolean isStrong(); |
| } |