Java TreeSet getTreeSet(final Object o, final Class classElement)

Here you can find the source of getTreeSet(final Object o, final Class classElement)

Description

Cast an object into a typed TreeSet .

License

Apache License

Parameter

Parameter Description
o The input object
classElement The class of the element in the set
T The type of the element

Return

The casted object

Declaration

public static <T> Set<T> getTreeSet(final Object o, final Class<T> classElement) 

Method Source Code

//package com.java2s;
/*/*from ww w  .  j a  v  a2 s  . c  om*/
 * #%L
 * utils-commons
 * %%
 * Copyright (C) 2016 - 2018 Gilles Landel
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */

import java.util.Comparator;

import java.util.Set;

import java.util.SortedSet;

import java.util.TreeSet;

public class Main {
    /**
     * Cast an object into a typed {@link TreeSet}.
     * 
     * @param o
     *            The input object
     * @param classElement
     *            The class of the element in the set
     * @return The casted object
     * @param <T>
     *            The type of the element
     */
    public static <T> Set<T> getTreeSet(final Object o, final Class<T> classElement) {
        final Set<T> set = new TreeSet<>();

        set(set, o, classElement);

        return set;
    }

    /**
     * Cast an object into a typed {@link TreeSet}.
     * 
     * @param o
     *            The input object
     * @param classElement
     *            The class of the element in the set
     * @param comparator
     *            The comparator to keep the sort
     * @return The casted object
     * @param <T>
     *            The type of the element
     */
    public static <T> SortedSet<T> getTreeSet(final Object o, final Class<T> classElement,
            final Comparator<T> comparator) {
        final SortedSet<T> set = new TreeSet<>(comparator);

        set(set, o, classElement);

        return set;
    }

    /**
     * Cast the object and feel the set.
     * 
     * @param set
     *            The output set
     * @param o
     *            The input object
     * @param classElement
     *            The typed class
     */
    private static <T> void set(final Set<T> set, final Object o, final Class<T> classElement) {
        if (o != null && classElement != null && Set.class.isAssignableFrom(o.getClass())) {
            Set<?> mObj = (Set<?>) o;
            for (Object obj : mObj) {
                if (obj != null && classElement.isAssignableFrom(obj.getClass())) {
                    set.add(classElement.cast(obj));
                }
            }
        }
    }

    /**
     * Get the class of the object ({@code null} safe).
     * 
     * @param object
     *            The object (required)
     * @param <T>
     *            The object type
     * @return The class of the object or null
     */
    @SuppressWarnings("unchecked")
    public static <T> Class<T> getClass(final T object) {
        if (object != null) {
            return (Class<T>) object.getClass();
        }
        return null;
    }

    /**
     * Auto cast an object.
     * 
     * @param object
     *            The object (required)
     * @param <T>
     *            The object type
     * @return The casted object
     * @throws ClassCastException
     *             on cast failure
     */
    @SuppressWarnings("unchecked")
    public static <T> T cast(final Object object) {
        return (T) object;
    }

    /**
     * Cast an object into the specified class (null safe).
     * 
     * @param o
     *            The input object (required)
     * @param clazz
     *            The output class (required)
     * @return The casted object or {@code null}
     * @param <T>
     *            The type of the output
     */
    public static <T> T cast(final Object o, final Class<T> clazz) {
        if (o != null && clazz != null && clazz.isAssignableFrom(o.getClass())) {
            return clazz.cast(o);
        }
        return null;
    }
}

Related

  1. createTreeSet(Iterable c)
  2. cvtListToTreeSet(List list)
  3. findSizedSubdirs(final String size, final TreeSet themeSubdirs)
  4. getDockInsets(final TreeSet set)
  5. getTreeSet(Collection collection)
  6. getVariance(TreeSet positions)
  7. intersection(TreeSet AL1, TreeSet AL2)
  8. minDiff(TreeSet numbers)
  9. newTreeSet(final Collection c)