AppConfig.java
import java.time.LocalDateTime;
public class AppConfig {
// アプリã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆã‚¯ãƒ©ã‚¹å…±é€šã§1ã¤ï¼‰
public static String VERSION;
// デãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ï¼ˆtrue: ON, false: OFF)
public static boolean DEBUG_MODE;
// èªã¿è¾¼ã¾ã‚ŒãŸæ™‚刻
public static LocalDateTime LOADED_AT;
// staticåˆæœŸåŒ–ブãƒãƒƒã‚¯ï¼šã‚¯ãƒ©ã‚¹ãŒæœ€åˆã«èªã¿è¾¼ã¾ã‚ŒãŸæ™‚ã«1度ã ã‘実行ã•れる
static {
VERSION = "1.0.0";
DEBUG_MODE = true;
LOADED_AT = LocalDateTime.now(); // å®Ÿè¡Œæ™‚ã®æ™‚刻を記録
}
// è¨å®šæƒ…å ±ã‚’å‡ºåŠ›ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆstaticãªã®ã§ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ä¸è¦ï¼‰
public static void printConfig() {
System.out.println("App Config:");
System.out.println("VERSION: " + VERSION);
System.out.println("DEBUG_MODE: " + DEBUG_MODE);
System.out.println("LOADED_AT: " + LOADED_AT);
}
// インスタンス化ã¯ä¸è¦ãªã®ã§ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã¯å®šç¾©ã—ãªã„
}
Main.java
public class Main {
public static void main(String[] args) {
// アプリè¨å®šæƒ…å ±ã‚’å‡ºåŠ›
AppConfig.printConfig();
}
}
å®Ÿè¡Œçµæžœï¼ˆä¾‹ï¼‰
App Config:
VERSION: 1.0.0
DEBUG_MODE: true
LOADED_AT: 2025-05-26T10:15:30.123456
(※ 実行タイミングã«ã‚ˆã£ã¦ LOADED_AT ã®å€¤ã¯å¤‰ã‚りã¾ã™ï¼‰
解説
ã“ã®å•題ã§ã¯ã€staticåˆæœŸåŒ–ブãƒãƒƒã‚¯ã®ç‰¹å¾´ã¨ç”¨é€”ã‚’ç†è§£ã—ã¾ã™ã€‚
staticåˆæœŸåŒ–ブãƒãƒƒã‚¯ã¨ã¯ï¼Ÿ
static {
// åˆæœŸåŒ–処ç†
}
ã“ã‚Œã¯ ã‚¯ãƒ©ã‚¹ãŒæœ€åˆã«èªã¿è¾¼ã¾ã‚ŒãŸçž¬é–“ã«1度ã ã‘実行ã•れる 特別ãªãƒ–ãƒãƒƒã‚¯ã§ã™ã€‚
- コンストラクタã¨é•ã„ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作らãªãã¦ã‚‚実行ã•れる
- åˆæœŸå€¤ã«æ™‚é–“ã‚„å¤–éƒ¨æƒ…å ±ã‚’å«ã‚ã‚‹ã¨ãã«ä¾¿åˆ©
static変数ã®è¤‡é›‘ãªåˆæœŸåŒ–処ç†ã«å‘ã„ã¦ã„ã‚‹
static変数ã¨åˆæœŸåŒ–ã®é–¢ä¿‚
public static String VERSION;
ã“ã®ã‚ˆã†ã«å®šç¾©ã•れ㟠static 変数ã¯ã€**クラス全体ã§å…±æœ‰ã•れる「è¨å®šé …ç›®ã€**ã®ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚
ãŸã¨ãˆã°ï¼š
VERSION: 固定値(定数ã§ã‚‚ã„ã„)DEBUG_MODE: 動作モードã®åˆ‡ã‚Šæ›¿ãˆã«ä½¿ãˆã‚‹LOADED_AT: 起動時刻ãªã©ã€1回ã ã‘æ±ºå®šã™ã‚‹ã¹ã値
ã“ã†ã„ã£ãŸå€¤ã‚’「ã¾ã¨ã‚ã¦ã€åˆæœŸåŒ–ã§ãã‚‹ã®ãŒ staticブãƒãƒƒã‚¯ã®å¼·ã¿ã§ã™ã€‚
ãªãœã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã§ã¯ãªã staticブãƒãƒƒã‚¯ãªã®ã‹ï¼Ÿ
- コンストラクタ㯠インスタンスã”ã¨ã«å‘¼ã°ã‚Œã‚‹
AppConfigã®ã‚ˆã†ãªè¨å®šã‚¯ãƒ©ã‚¹ã¯ newã—ãªã„è¨è¨ˆãªã®ã§ã€ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ãŒå®Ÿè¡Œã•れãªã„- ãれã§ã‚‚「一度ã ã‘ã®åˆæœŸåŒ–ã€ã¯å¿…è¦
→ ãã“ã§ staticåˆæœŸåŒ–ブãƒãƒƒã‚¯ã‚’使ã†
ã¾ã¨ã‚
static {}ã¯ ã‚¯ãƒ©ã‚¹ãŒæœ€åˆã«ãƒãƒ¼ãƒ‰ã•れãŸçž¬é–“ã«å®Ÿè¡Œã•れる1回é™ã‚Šã®å‡¦ç†static変数ã®è¤‡é›‘ãªåˆæœŸåŒ–や外部ä¾å˜ã®åˆæœŸåŒ–ã«é©ã—ã¦ã„ã‚‹- ã“ã®ä»•組ã¿ã‚’使ãˆã°ã€newã—ãªã„クラスã§ã‚‚一度ãã‚Šã®æº–å‚™ãŒã§ãã‚‹
104 ステップアップå•題 「static修羅é“ã€
Just Keep Typing, Baby!ã§ã¯ã€ã“ã®ã€Œstatic修羅é“ã€ã§ã¤ã¾ã¥ã„ãŸäººå‘ã‘ã®è§£èª¬ã‚’ã—ã¦ã„ã¾ã™ã€‚ã“ã¡ã‚‰ã‚‚ãœã²ï¼
// tesh:
// ã“ã“ã€åˆ†ã‹ã‚‹ã¨ä¸€æ°—ã«ãƒ©ã‚¯ã«ãªã‚‹ã€‚マジã§ã€‚
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™



コメント