001package com.ericlam.mc.eld.services; 002 003import com.ericlam.mc.eld.exceptions.ArgumentParseException; 004 005import java.util.Iterator; 006 007/** 008 * 參數解析器 009 */ 010public interface ArgParserService<CommandSender> { 011 012 /** 013 * 嘗試解析參數 014 * 015 * @param type 解析類別 016 * @param identifier 標識文字 017 * @param args 參數 018 * @param sender 指令發送者 019 * @param <T> 解析類別 020 * @return 實例 021 * @throws ArgumentParseException 參數解析失敗時 022 */ 023 <T> T tryParse(Class<T> type, String identifier, Iterator<String> args, CommandSender sender) throws ArgumentParseException; 024 025 /** 026 * 嘗試解析參數 027 * 028 * @param type 解析類別 029 * @param args 參數 030 * @param sender 指令發送者 031 * @param <T> 解析類別 032 * @return 實例 033 * @throws ArgumentParseException 參數解析失敗時 034 */ 035 <T> T tryParse(Class<T> type, Iterator<String> args, CommandSender sender) throws ArgumentParseException; 036 037}