技術とか戦略とか

証券レガシーシステムを8年いじってから転職した普通の文系SEによるブログ。技術のみではなく趣味の戦略考察についても。

「不可視です」というエラーが出たらカプセル化された変数・メソッドを使用しようとしていないか疑う

タイトルの通りなのですが。
 
例えば、
「int hoge = new java.util.Random().next(10)」
というコードを書いた場合、
「next(int)はRandomで不可視です」
というエラーが出ます。
 
Randomクラスのnextメソッドはprotectedで定義されており、外部に提供されていないメソッドであるため、外部から使おうとするとエラーになります。
外部に提供されているメソッドとしてはnextIntメソッド(publicで定義)があるので、
「int hoge = new java.util.Random().nextInt(10)」
とすればコンパイルエラーは消えます。