ちょっと気になったので試したメモ。
結論
呼び出せる。コンパイル通る。警告すら出ない。
検証内容
環境
- Windows 7 64bit(コマンドプロンプトにてコンパイル・実行)
- Java9
ソース
// Main.java class Main { public static void main(String[] args) { Test instance = new Test(); System.out.println(instance.field); System.out.println(instance.method()); } } class Test { public static String field = "static field"; public static String method() { return "static method!"; } }
実行結果
C:\work>javac Main.java C:\work>java Main static field static method!
感想
実行できるとは思っていたが、コンパイル時に警告がでると考えていた 。 実際には警告すら出ずにコンパイルできた。
いずれにしろ推奨はしない。 理由は、インスタンスメソッド・フィールドと区別が付きづらくなるため。
公式ドキュメント等は調べていません。
ついでに
Java10 きましたね。
var
(ローカル型推論)が来たので、バリバリ使っていきたいと思います。
人によっては「やめてくれ!」となるかもしれませんが、 日頃 TypeScript とか Scala とかやってると型推論使いたくなっちゃいます。