View Javadoc

1   /*******************************************************************************
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   *******************************************************************************/
19  package org.apache.commons.convert;
20  
21  /** Converter interface. Classes implement this interface to convert one
22   * Java object type to another.
23   *
24   * @param <S> The source object type
25   * @param <T> The target object type
26   */
27  public interface Converter<S, T> {
28      /** Returns <code>true</code> if this object can convert
29       * <code>sourceClass</code> to <code>targetClass</code>.
30       * <p>Implementations can accomodate class hierarchy ranges
31       * by converting super classes or interfaces.</p>
32       *
33       * @param sourceClass The source <code>Class</code>
34       * @param targetClass The target <code>Class</code>
35       * @return <code>true</code> if this object can convert
36       * <code>sourceClass</code> to <code>targetClass</code>.
37       */
38      public boolean canConvert(Class<?> sourceClass, Class<?> targetClass);
39  
40      /** Converts <code>obj</code> to <code>T</code>.
41       *
42       * @param obj The source <code>Object</code> to convert
43       * @return The converted <code>Object</code>
44       * @throws ConversionException
45       */
46      public T convert(S obj) throws ConversionException;
47  
48      /** Returns the source <code>Class</code> for this converter.
49       *
50       * @return The source <code>Class</code> for this converter
51       */
52      public Class<?> getSourceClass();
53  
54      /** Returns the target <code>Class</code> for this converter.
55       *
56       * @return The target <code>Class</code> for this converter
57       */
58      public Class<?> getTargetClass();
59  }