View Javadoc

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   * Als Superklasse casted diese Klasse in die Subclass gegebene durch
26   * <code>this.getClass()</code>
27   *
28   * @author Christoph Schmidt-Casdorff
29   */
30  public class Implementor implements IImplementor {
31  
32      /**
33       * prueft, ob uebergebene Klasse <code>assignable</code> von aktueller Klasse ist.
34       */
35      public <X> X cast(final Class<X> iface) {
36          if (iface == null) {
37              throw new IllegalArgumentException("Parameter 'cls' muss angegeben werden");
38          }
39          if (iface.isAssignableFrom(this.getClass())) {
40              return iface.cast(this);
41          }
42          throw new ClassCastException("Klasse " + this.getClass() + " kann nicht nach " + iface + " gewandelt werden");
43      }
44  
45      public <X> boolean isImplementationOf(final Class<X> cls) {
46          return (cls != null) && cls.isAssignableFrom(this.getClass());
47      }
48  
49  }