技術とか戦略とか

SIerで証券レガシーシステムを8年いじってからSESに転職した普通の文系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)」
とすればコンパイルエラーは消えます。