Hi Jia, Actually, the Javadoc for java.lang.Comparable says that java. "Note that null is not an instance of any class, and e.compareTo(null) should throw a NullPointerException even though e.equals(null) returns false."
So, equals(null) should return false and compareTo(null) should throw an NPE. See http://java.sun.com/javase/6/docs/api/java/lang/Comparable.html for details about natural ordering There were no unit tests for ptolemy.actor.util.Time. I created a unit test for this bug and fixed Time.java. One way around this is to do an instanceof check because null is not an instance of a class. So, you'll see equals implemented like: public boolean equals(Object time) { if (time instanceof Time) { return this.compareTo(time) == 0; } return false; } In Ptolemy, the classes have equals() methods. I checked the classes upto DEEvent, could you take a look at the classes below DEEvent? doc/tutorial/LeftRightDirector.java com/JLex/Main.java com/jgoodies/forms/layout/ConstantSize.java com/jgoodies/forms/layout/BoundedSize.java ptolemy/kernel/attributes/VersionAttribute.java ptolemy/backtrack/eclipse/ast/Type.java # No need to check these, they are used for back tracking ptolemy/backtrack/util/java/util/AbstractList.java ptolemy/backtrack/util/java/util/AbstractMap.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/Collections.java ptolemy/backtrack/util/java/util/AbstractSet.java ptolemy/backtrack/util/java/util/WeakHashMap.java ptolemy/backtrack/util/java/util/WeakHashMap.java ptolemy/backtrack/util/java/util/Hashtable.java # I checked these ptolemy/math/FixPoint.java ptolemy/math/Overflow.java ptolemy/math/Fraction.java ptolemy/math/FixPointQuantization.java ptolemy/math/Quantization.java ptolemy/math/Precision.java ptolemy/math/Rounding.java ptolemy/domains/fsm/kernel/ia/StatePair.java ptolemy/domains/csp/demo/DiningPhilosophers/Coordinate.java ptolemy/domains/de/kernel/DEEvent.java # Start checking here ptolemy/domains/gr/kernel/SceneGraphToken.java ptolemy/domains/gr/kernel/Scene2DToken.java ptolemy/graph/mapping/MapMapping.java ptolemy/graph/Graph.java ptolemy/graph/Inequality.java ptolemy/graph/LabeledList.java ptolemy/component/data/type/TupleType.java ptolemy/component/data/TupleToken.java ptolemy/apps/cacheAwareScheduler/kernel/MemoryAddress.java ptolemy/codegen/kernel/CodeGeneratorHelper.java ptolemy/codegen/kernel/CodeStream.java ptolemy/caltrop/ddi/util/DataflowActorInterpreter.java ptolemy/caltrop/ddi/DataflowWithRates.java ptolemy/moml/unit/Unit.java ptolemy/actor/gt/GraphAnalyzer.java ptolemy/actor/gt/GraphAnalyzer.java ptolemy/actor/util/Time.java ptolemy/data/type/MatrixType.java ptolemy/data/type/ObjectType.java ptolemy/data/type/BaseType.java ptolemy/data/type/RecordType.java ptolemy/data/type/ArrayType.java ptolemy/data/type/Type.java ptolemy/data/type/FunctionType.java ptolemy/data/type/FixType.java ptolemy/data/type/UnionType.java ptolemy/data/type/TypeConstant.java ptolemy/data/expr/CachedMethod.java ptolemy/data/properties/token/PropertyToken.java ptolemy/data/properties/PropertyHelper.java ptolemy/data/ShortToken.java ptolemy/data/LongToken.java ptolemy/data/UnsignedByteToken.java ptolemy/data/FloatToken.java ptolemy/data/StringToken.java ptolemy/data/ObjectToken.java ptolemy/data/ComplexToken.java ptolemy/data/ArrayToken.java ptolemy/data/IntMatrixToken.java ptolemy/data/UnionToken.java ptolemy/data/PetiteToken.java ptolemy/data/IntToken.java ptolemy/data/DoubleMatrixToken.java ptolemy/data/BooleanMatrixToken.java ptolemy/data/ActorToken.java ptolemy/data/DoubleToken.java ptolemy/data/FixMatrixToken.java ptolemy/data/RecordToken.java ptolemy/data/BooleanToken.java ptolemy/data/EventToken.java ptolemy/data/LongMatrixToken.java ptolemy/data/FixToken.java ptolemy/data/ComplexMatrixToken.java ptolemy/copernicus/kernel/SideEffectAnalysis.java _Christopher -------- It's because when you are comparing one time object with another, both of them have to be actual objects, and null is not an object. You should probably have a: if (a != null && b !=null) when you are using the equals method. Jia On Sun, Jul 6, 2008 at 3:54 PM, Richard Ware <[EMAIL PROTECTED]> wrote: > When I do this, > > Time a = ourDirector.getModelTime(); > Time b = null; > boolean comparison = a.equals( b ); > > I get a NullPointerException. > > That isn't what the equals() method of a Java object is supposed to do. > If > given null as the argument, it's supposed to calmly return the boolean > value "false". > > > > > ------------------------------------------------------------------------- --- > Posted to the ptolemy-hackers mailing list. Please send administrative > mail for this list to: [EMAIL PROTECTED] > ---------------------------------------------------------------------------- Posted to the ptolemy-hackers mailing list. Please send administrative mail for this list to: [EMAIL PROTECTED]