... sign.1.1
As we will explain shortly, Java supports several different sizes of integer representation; 31 binary digits plus sign is the default for integer constants.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... execution.1.2
Invoking a method on the null reference actually throws an exception which in principle can be caught using Java's exception handling mechanism discussed in Section. Since this exception is the result of a coding error, catching such an exception in regular program code (as opposed to a test harness) is a bad idea.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... classes1.3
Any class that is not declared as abstract is ``concrete''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... code.1.4
In pathological cases, some repeated code may not be subject to factoring because of conflicts among possible factorings. For example, variants A and B may share code for method m
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... SIZE="-1">m1.5
The redefined method must have exactly the same name and input and output types as the method m that would have been inherited.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... SIZE="-1">false.1.6
This part of the equals specification is poorly designed because it unnecessarily complicates the behavior of equals without providing any useful benefit. A better specification would have stated that the behavior of equals on null was unspecified because null is outside the intended domain of the method.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... method.1.7
Of course, any static method can be converted to an instance method in some class, but the conversion is gratuitous since the static method code ignores this.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... returns.1.8
In Scheme, this statement is false in general; local variables continue to exist as long as a ``closure'' referring to them exists.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... definition;1.9
The return types of arithmetic operators generally depend on the types of their arguments. For some operator applications, the table immediately reports a type error.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...alternative;1.10
If neither arm of the conditional expression has a more general type, the program is not well-typed.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... SIZE="-1">VoidType.1.11
The Java libraries include a Void class, but it cannot be instantiated, so we must define our own VoidType.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... loop:2.1
With one minor exception involving the use of continue in the loop body. Since our Java subset does not include continue, it is not an issue.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... call2.2
Taking care to avoid interference from side effects!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...nested-class-name).2.3
Since classes may be nested to any depth, multiply nested classes have multiple qualifiers, one for each level of nesting.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... object.2.4
Another alternative is add an owner field to the abstract class List that refers to the containing QuasiList object but this approach complicates the form of the constructors for Cons and Empty, which must take an additional argument to initialize the owner field.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.