001/* 002 * This file is part of Baritone. 003 * 004 * Baritone is free software: you can redistribute it and/or modify 005 * it under the terms of the GNU Lesser General Public License as published by 006 * the Free Software Foundation, either version 3 of the License, or 007 * (at your option) any later version. 008 * 009 * Baritone is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU Lesser General Public License for more details. 013 * 014 * You should have received a copy of the GNU Lesser General Public License 015 * along with Baritone. If not, see <https://www.gnu.org/licenses/>. 016 */ 017 018package baritone.api.utils; 019 020import java.lang.reflect.ParameterizedType; 021import java.lang.reflect.Type; 022 023/** 024 * @author Brady 025 * @since 4/20/2019 026 */ 027public final class TypeUtils { 028 029 private TypeUtils() {} 030 031 /** 032 * Resolves the "base type" for the specified type. For example, if the specified 033 * type is {@code List<String>}, then {@code List.class} will be returned. If the 034 * specified type is already a class, then it is directly returned. 035 * 036 * @param type The type to resolve 037 * @return The base class 038 */ 039 public static Class<?> resolveBaseClass(Type type) { 040 return type instanceof Class ? (Class<?>) type 041 : type instanceof ParameterizedType ? (Class<?>) ((ParameterizedType) type).getRawType() 042 : null; 043 } 044}