public class Main {
public static void main(String[] args) {
// インスタンスã®å®Ÿéš›ã®åž‹ãŒä¸æ˜Žãªã‚ªãƒ–ジェクト
Object unknownObject = getUnknownObject();
// null ãƒã‚§ãƒƒã‚¯ã‚’行ã£ã¦ã‹ã‚‰ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒç‰¹å®šã®åž‹ã§ã‚ã‚‹ã‹ã‚’確èªã—ã¦ã‹ã‚‰ãƒ€ã‚¦ãƒ³ã‚ャスト
if (unknownObject != null) {
if (unknownObject instanceof SpecificType) {
SpecificType specificInstance = (SpecificType) unknownObject;
// ダウンã‚ャスト後ã®å‡¦ç†
specificInstance.doSomething();
} else {
System.out.println("The object is not of the expected type");
}
} else {
System.out.println("The object is null");
}
}
// ä»®ã®ãƒ¡ã‚½ãƒƒãƒ‰ï¼šå®Ÿéš›ã®ã‚¢ãƒ—リケーションã§ã¯é©åˆ‡ãªæ–¹æ³•ã§ã‚ªãƒ–ジェクトをå–å¾—
private static Object getUnknownObject() {
// ã“ã“ã§ã¯å˜ã« SpecificType ã‚¯ãƒ©ã‚¹ã®æ–°ã—ã„インスタンスを返ã™ä¾‹
return new SpecificType();
// ã¾ãŸã¯ null ã‚’è¿”ã™ã“ã¨ã‚‚ã‚りã¾ã™
// return null;
}
}
// ä»®ã®ã‚¯ãƒ©ã‚¹ï¼šå®Ÿéš›ã®ã‚¢ãƒ—リケーションã§ã¯é©åˆ‡ãªåž‹ã‚’使用
class SpecificType {
void doSomething() {
System.out.println("Doing something specific");
}
}
ã“ã®ä¾‹ã§ã¯ã€unknownObject ã¨ã„ã†ã‚ªãƒ–ジェクトãŒç‰¹å®šã®åž‹ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’ instanceof 演算åを使用ã—ã¦ç¢ºèªã—ã¦ã‹ã‚‰ã€å®‰å…¨ã«ãƒ€ã‚¦ãƒ³ã‚ャストã—ã¦ã„ã¾ã™ã€‚ã¾ãŸã€null ãƒã‚§ãƒƒã‚¯ã‚‚行ã„ã€NullPointerException を回é¿ã—ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ—ãƒã‚°ãƒ©ãƒ ãŒå®‰å…¨ã«å®Ÿè¡Œã•れるよã†ã«ãªã‚Šã¾ã™ã€‚
NullPointerException ã®å›žé¿
NullPointerException(以下ã€NPE)(別å”ヌルピ)ã¯ã€Javaプãƒã‚°ãƒ©ãƒ ã§ã‚ˆã見られる例外ã®ä¸€ã¤ã§ã€ç‰¹ã«ã‚ªãƒ–ジェクトã®å‚ç…§ãŒnullã§ã‚ã‚‹ã¨ãã«ç™ºç”Ÿã—ã¾ã™ã€‚ã“れを回é¿ã™ã‚‹ãŸã‚ã«ã¯ã€é©åˆ‡ãªnullãƒã‚§ãƒƒã‚¯ãŒå¿…è¦ã§ã™ã€‚
å‰è¿°ã®ã‚³ãƒ¼ãƒ‰ä¾‹ã§ã¯ã€æ¬¡ã®ã‚ˆã†ã«NPEを回é¿ã—ã¦ã„ã¾ã™ï¼š
// null ãƒã‚§ãƒƒã‚¯ã‚’行ã£ã¦ã‹ã‚‰ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒç‰¹å®šã®åž‹ã§ã‚ã‚‹ã‹ã‚’確èªã—ã¦ã‹ã‚‰ãƒ€ã‚¦ãƒ³ã‚ャスト
if (unknownObject != null) {
if (unknownObject instanceof SpecificType) {
SpecificType specificInstance = (SpecificType) unknownObject;
// ダウンã‚ャスト後ã®å‡¦ç†
specificInstance.doSomething();
} else {
System.out.println("The object is not of the expected type");
}
} else {
System.out.println("The object is null");
}
ã“ã®éƒ¨åˆ†ãŒnullãƒã‚§ãƒƒã‚¯ã®ã‚³ãƒ¼ãƒ‰ã§ã™ï¼š
if (unknownObject != null) {
// ...
} else {
System.out.println("The object is null");
}
ã“ã®éƒ¨åˆ†ã¯ã€unknownObject ãŒnullã§ãªã„å ´åˆã«ã€ãã®å¾Œã®ã‚³ãƒ¼ãƒ‰ã‚’実行ã™ã‚‹ã‚ˆã†ã«ã—ã¦ã„ã¾ã™ã€‚nullã§ã‚ã‚‹å ´åˆã«ã¯ã€The object is null ã¨è¡¨ç¤ºã—ã¦ã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªãƒã‚§ãƒƒã‚¯ã‚’行ã†ã“ã¨ã§ã€unknownObject ãŒnullã§ã‚ã‚‹å ´åˆã«NPEを回é¿ã§ãã¾ã™ã€‚
NPEã¯ãƒ—ãƒã‚°ãƒ©ãƒ ã®å®Ÿè¡Œæ™‚ã«ç™ºç”Ÿã™ã‚‹ä¾‹å¤–ã§ã‚りã€ã‚ªãƒ–ジェクトãŒnullã§ã‚る状態ã§ãƒ¡ã‚½ãƒƒãƒ‰ã‚„フィールドã«ã‚¢ã‚¯ã‚»ã‚¹ã—よã†ã¨ã™ã‚‹ã¨ç™ºç”Ÿã—ã¾ã™ã€‚ãã®ãŸã‚ã€ã‚ªãƒ–ジェクトãŒnullã§ãªã„ã“ã¨ã‚’確èªã—ã¦ã‹ã‚‰æ“作を行ã†ã“ã¨ãŒã€NPEを回é¿ã™ã‚‹é‡è¦ãªæ‰‹æ³•ã§ã™ã€‚
「015 ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント