001package com.ericlam.mc.eldgui; 002 003import org.jetbrains.annotations.Nullable; 004 005/** 006 * 玩家在打開界面到關閉界面時的數據容器,用於在各個 Controller 之間傳遞資料用 007 */ 008public interface UISession { 009 010 /** 011 * 透過 key 獲取數據 012 * 013 * @param key 鍵 014 * @param <T> 數據類型 015 * @return 數據,可爲 null 016 */ 017 @Nullable <T> T getAttribute(String key); 018 019 /** 020 * 透過 key 提取數據並在 Session 中刪除 021 * 022 * @param key 鍵 023 * @param <T> 數據類型 024 * @return 數據,可爲 null 025 */ 026 @Nullable <T> T pollAttribute(String key); 027 028 /** 029 * 設置數據到 Session 030 * 031 * @param key 鍵 032 * @param value 數值 033 */ 034 void setAttribute(String key, Object value); 035 036 037}