1 package org.apidesign.sidemeanings;
3 public final class Mixed {
7 // BEGIN: sidemeanings.Mixed.Dirty
8 public static abstract class MixedClass {
9 protected MixedClass() { }
11 public final void apiForClients() { /*...*/ }
12 protected abstract void toBeImplementedBySubclass();
13 protected final void toBeCalledBySubclass() { /* ... */ }
15 // END: sidemeanings.Mixed.Dirty
17 // BEGIN: sidemeanings.Mixed.Clean
18 public static final class NonMixed {
20 public static NonMixed create(NonMixedImpl impl) {
21 NonMixed api = new NonMixed();
22 Callback callback = new Callback(api);
23 impl.initialize(callback);
27 public final void apiForClients() { /*...*/ }
30 public static interface NonMixedImpl {
31 public void initialize(Callback c);
32 public void toBeImplementedBySubclass();
35 public static final class Callback {
36 Callback(NonMixed nomMixed) {
38 public final void toBeCalledBySubclass() {
42 // END: sidemeanings.Mixed.Clean