Skip to content

Commit

Permalink
キャスト追加
Browse files Browse the repository at this point in the history
  • Loading branch information
古賀 健太 authored and 古賀 健太 committed May 8, 2019
1 parent 49115f6 commit e6bc585
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@
これでわかることは、変数の型に指定されるクラス名が完全一致しているなら変わっても問題が出ないが、派生元のクラス名(あるいはインタフェース名)が
使われているとだめ、ということ。

なお、src/Main.javaのbase_var_test()において、boolean b = d.isOk()をboolean b = ((Derived)d).isOk()とするとエラーにならない。
変数の型にはインタフェースやクラスといった区別はなさそうに見える。
21 changes: 20 additions & 1 deletion src/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,17 @@ public static void main(String[] args)

System.out.println("==============================");

System.out.println("base var cast test");
try
{
base_var_cast_test();
} catch (Error e)
{
System.out.println("error " + e);
}

System.out.println("==============================");

System.out.println("var free test");
try
{
Expand All @@ -54,9 +65,17 @@ static void base_var_test()
System.out.println("bool="+b);
}

static void base_var_cast_test()
{
Base d = new Derived();
boolean b = ((Derived)d).isOk();
System.out.println("bool="+b);
}

static void var_free_test()
{
boolean b = new Derived().isOk();
Object d = new Derived();
boolean b = ((Derived)d).isOk();
System.out.println("bool="+b);
}
}

0 comments on commit e6bc585

Please sign in to comment.