001package com.ericlam.mc.minigames.core.function; 002 003/** 004 * 可以被形態轉換的容器 005 * 006 * @param <E> 根形態 007 */ 008public interface Castable<E> { 009 010 /** 011 * 轉換形態到子容器 012 * <p> 013 * 相當於 014 * <code> 015 * Child child = (Child)root; 016 * </code> 017 * 018 * @param cls 子容器類 019 * @param <T> 容器形態 020 * @return 子容器 021 */ 022 default <T extends E> T castTo(Class<T> cls) { 023 return cls.cast(this); 024 } 025 026}