Question 1: What methods would a class that implements the java.lang.CharSequence
interface have to implement?
Answer 1: charAt
, length
, subSequence
, and toString
.
Question 2: What is wrong with the following interface?
public interface SomethingIsWrong { void aMethod(int aValue) { System.out.println("Hi Mom"); } }
Answer 2: It has a method implementation in it. Only default and static methods have implementations.
Question 3: Fix the interface in Question 2.
Answer 3:
public interface SomethingIsWrong { void aMethod(int aValue); }
Alternatively, you can define aMethod
as a default method:
public interface SomethingIsWrong { default void aMethod(int aValue) { System.out.println("Hi Mom"); } }
Question 4: Is the following interface valid?
public interface Marker { }
Answer 4: Yes. Methods are not required. Empty interfaces can be used as types and to mark classes without requiring any particular method implementations. For an example of a useful empty interface, see java.io.Serializable.
Exercise 1: Write a class that implements the CharSequence
interface found in the java.lang
package. Your implementation should return the string backwards. Select one of the sentences from this book to use as the data. Write a small main
method to test your class; make sure to call all four methods.
Answer 1: See
CharSequenceDemo.java
Exercise 2: Suppose that you have written a time server, which periodically notifies its clients of the current date and time. Write an interface that the server could use to enforce a particular protocol on its clients.
Answer 2: See
TimeClient.java
.