1 package org.csc.phynixx.common.cast; 2 3 /* 4 * #%L 5 * phynixx-common 6 * %% 7 * Copyright (C) 2014 Christoph Schmidt-Casdorff 8 * %% 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 * #L% 21 */ 22 23 24 /** 25 * Instanzen, welche mehere Interface implementieren, welche nicht ale an der Instanz sichtbar sind, 26 * bieten mit Hilfe dieses IF die Moeglichkeit, zu einen dieser 'versteckten' Interfaces zu wechselen 27 * 28 * @author Christoph Schmidt-Casdorff 29 */ 30 public interface IImplementor { 31 32 /** 33 * Prueft, ob cast in die gewuenschte Zielklasse moeglich ist. 34 * <p/> 35 * Ist <code>cls==null</code>, so wird <code>false</code> geliefert. 36 * 37 * @param <X> expected (Super)Type of the checked object 38 * @param cls target class / interface 39 * @return true if the current class can be safely casted to X 40 */ 41 <X> boolean isImplementationOf(Class<X> cls); 42 43 /** 44 * Fuehrt den cast nach <code>Class<X></code> 45 * 46 * @param <X> 47 * @param cls Zielklasse 48 * @return Objekt, welche das gewuenschte Klasse implementiert. Es wird kein Zusammenhang zwischen Ausgangsobjekt und Resultat vorausgesetzt (wie .z.B. sub/super, implements, instanceof etc) 49 * @throws ClassCastException 50 */ 51 <X> X cast(Class<X> cls); 52 }