Which of the following pieces of logic could be used in the method that implements Comparable? Assume that the method is passed Object a, which is really a ChessPiece. Also assume that ChessPiece has a method called returnType which returns the type of the given piece. Only one of these answers has correct logic.
a) if (this.type < a.returnType( )) return –1;b) if (this.type = = a.returnType( )) return 0;
c) if (this.type.equals(a.returnType( )) return 0;
d) if (a.returnType( ).equals(“King”)) return -1;
e) if (a.returnType( ).equals(“Pawn”)) return 1;
Consider a class called ChessPiece. This class has two instance data, String type and int player. The variable type will store “King”, “Queen”, “Bishop”, etc and the int player will store 0 or 1 depending on whose piece it is. We wish to implement Comparable for the ChessPiece class. Assume that, the current ChessPiece is compared to a ChessPiece passed as a parameter. Pieces are ordered as follows: “Pawn” is a lesser piece to a “Knight” and a “Bishop”, “Knight” and “Bishop” are equivalent for this example, both are lesser pieces to a “Rook” which is a lesser piece to a “Queen” which is a lesser piece to a “King.”
Answer: c.
Explanation: If the type of this piece and of a are the same type, then they are considered equal and the method should return 0 to indicate this. Note that this does not cover the case where this piece is a “Knight” and a is a “Bishop”, so additional code would be required for the “equal to” case. The answer in b is not correct because it compares two Strings to see if they are the same String, not the same value. The logic in d and e are incorrect because neither of these takes into account what the current piece is, only what the parameter’s type is. In d, if a is a “King”, it will be greater than this piece if this piece is not a “King”, but will be equal if this piece is a “King” and similarly in e, it does not consider if this piece is a “Pawn” or not. Finally, a would give a syntax error because two Strings cannot be compared using the “<” operator.
Enhancing Classes
- A listener is an object that
- JOptionPane is a class that provides GUI
- In order to have some code throw an exception, you would use which of the following reserved words?
- An exception can produce a “call stack trace” which lists
- A Java program can handle an exception in several different ways. Which of the following is not a way that a Java program could handle an exception?
- Assume that you are defining a class and you want to implement an ActionListener. You state addActionListener(this); in your class’ constructor. What does this mean?
- If s is a String, and s = “no”; is performed, then s
- Which of the following method headers would properly define the method needed to make this class Comparable?
- In order to implement Comparable in a class, what method(s) must be defined in that class?
- Which of the following interfaces would be used to implement a class that represents a group (or collection) of objects?
- An object that refers to part of itself within its own methods can use which of the following reserved words to denote this relationship?
- If there are 4 objects of type StaticExample, how many different instances of x are there?
- What is the value of z after the third statement executes below?
- Static methods cannot
- Which of the following methods is a static method? The class in which the method is defined is given in parentheses following the method name.
- Consider the following swap method. If String x = "Hello" and String y = "Goodbye", then swap(x, y); results in which of the following?
- If the instructions z.set2(5); and y.set1(10); are performed, which of the following is true?
- If the instruction z.set2(y.get1( )); is executed, which of the following is true?
- The statement y.get2( ); will
- The statement z.get2( ); will
- If the operation y = x; is performed, then the result of (x = = y) is
- If the operation y = "Hello"; is performed, then the result of (x = = y) is
- The result of x.length( ) + y.length( ) is
- The result of (x = = y) is