1 21 22 package org.armedbear.lisp; 23 24 public class JavaObject extends LispObject 25 { 26 private final Object obj; 27 28 public JavaObject(Object obj) 29 { 30 this.obj = obj; 31 } 32 33 public final Object getObject() 34 { 35 return obj; 36 } 37 38 public Object javaInstance() 39 { 40 return obj; 41 } 42 43 public Object javaInstance(Class c) 44 { 45 return javaInstance(); 46 } 47 48 public static final Object getObject(LispObject o) throws ConditionThrowable 49 { 50 try { 51 return ((JavaObject)o).obj; 52 } 53 catch (ClassCastException e) { 54 signal (new TypeError(o, "Java object")); 55 return null; 57 } 58 } 59 60 public final boolean equal(LispObject other) 61 { 62 if (this == other) 63 return true; 64 if (other instanceof JavaObject) 65 return (obj == ((JavaObject)other).obj); 66 return false; 67 } 68 69 public final boolean equalp(LispObject other) 70 { 71 return equal(other); 72 } 73 74 public int sxhash() 75 { 76 return obj == null ? 0 : (obj.hashCode() & 0x7ffffff); 77 } 78 79 public String writeToString() 80 { 81 if (obj instanceof ConditionThrowable) 82 return obj.toString(); 83 StringBuffer sb = new StringBuffer ("#<JAVAOBJECT "); 84 if (obj == null) 85 sb.append("null"); 86 else { 87 sb.append(obj.getClass().getName()); 88 sb.append(" @ #x"); 89 sb.append(Integer.toHexString(System.identityHashCode(obj))); 90 } 91 sb.append(">"); 92 return sb.toString(); 93 } 94 } 95 | Popular Tags |