01: /* Licensed to the Apache Software Foundation (ASF) under one or more
02: * contributor license agreements. See the NOTICE file distributed with
03: * this work for additional information regarding copyright ownership.
04: * The ASF licenses this file to You under the Apache License, Version 2.0
05: * (the "License"); you may not use this file except in compliance with
06: * the License. You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16:
17: package org.apache.harmony.luni.platform;
18:
19: /**
20: * The interface to extensible objects.
21: * <p>
22: * Classes can implement this interface (a single method) to provide interfaces
23: * that are not API -- each interface type has to be handled in the
24: * implementation of <code>getAdapter(Class)</code>. This is a good way to
25: * extend the class without breaking existing API.
26: * </p>
27: * <p>
28: * In addition, classes can be augmented by interfaces that are defined by other
29: * classes (which requires the <code>getAdapter(Class)</code> to be
30: * implemented by a factory.
31: *
32: */
33: public interface IAdaptable {
34:
35: /**
36: * Answers the adapter corresponding to the given class.
37: * <p>
38: * The adapter is typically obtained using the class literal, like this:
39: *
40: * <pre>
41: * ...
42: * IAdaptable = (IAdaptable) foo;
43: * IMyInterface bar = (IMyInterface)foo.getAdapter(IMyInterface.class);
44: * bar.doMyThing();
45: * ...
46: * </pre>
47: *
48: * @param adapter
49: * the type of adapter requested
50: * @return the adapter
51: */
52: public Object getAdapter(Class adapter);
53: }
|