Here you can find the source of castWithGenericsOrNull(Class base, Object obj)
Parameter | Description |
---|---|
B | Base type to cast at |
T | Derived type returned |
base | Base class to cast at |
obj | Object |
@SuppressWarnings("unchecked") public static <B, T extends B> T castWithGenericsOrNull(Class<B> base, Object obj)
//package com.java2s; /*/*ww w.java 2 s . c o m*/ This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures Copyright (C) 2013 Ludwig-Maximilians-Universit?t M?nchen Lehr- und Forschungseinheit f?r Datenbanksysteme ELKI Development Team This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ public class Main { /** * Cast an object at a base class, but return a subclass (for Generics!). * * The main goal of this is to allow casting an object from e.g. " * <code>List</code>" to "<code>List<Something></code>" without having * to add SuppressWarnings everywhere. * * @param <B> Base type to cast at * @param <T> Derived type returned * @param base Base class to cast at * @param obj Object * @return Cast object or null. */ @SuppressWarnings("unchecked") public static <B, T extends B> T castWithGenericsOrNull(Class<B> base, Object obj) { try { return (T) base.cast(obj); } catch (ClassCastException e) { return null; } } }