bc0026c3e1
Plus many new examples in "streams" chapter.
48 lines
959 B
Java
48 lines
959 B
Java
// streams/MICollision.java
|
|
import java.util.*;
|
|
|
|
interface Bob1 {
|
|
default void bob() { System.out.println("Bob1::bob"); }
|
|
}
|
|
|
|
interface Bob2 {
|
|
default void bob() { System.out.println("Bob2::bob"); }
|
|
}
|
|
|
|
// class Bob implements Bob1, Bob2 {}
|
|
/* Produces:
|
|
error: class Bob inherits unrelated defaults
|
|
for bob() from types Bob1 and Bob2
|
|
class Bob implements Bob1, Bob2 {}
|
|
^
|
|
1 error
|
|
*/
|
|
|
|
interface Sam1 {
|
|
default void sam() { System.out.println("Sam1::sam"); }
|
|
}
|
|
|
|
interface Sam2 {
|
|
default void sam(int i) { System.out.println(i * 2); }
|
|
}
|
|
|
|
// This works because the argument lists are distinct:
|
|
class Sam implements Sam1, Sam2 {}
|
|
|
|
interface Max1 {
|
|
default void max() { System.out.println("Max1::max"); }
|
|
}
|
|
|
|
interface Max2 {
|
|
default int max() { return 47; }
|
|
}
|
|
|
|
// class Max implements Max1, Max2 {}
|
|
/* Produces:
|
|
error: types Max2 and Max1 are incompatible;
|
|
both define max(), but with unrelated return types
|
|
class Max implements Max1, Max2 {}
|
|
^
|
|
1 error
|
|
*/
|