目的は、互換性の変更、副作用、バグ、および/またはあるバージョンでは別の方法で、別のバージョンでは別の方法で動作する未定義の動作に依存するJVMバージョンを検出するJavaコードを書くことです。さらに、コードは、空白や読みやすい変数名を犠牲にすることなく、少なくとも少し読みやすくする必要があります。
その目的を確実にするために、正確な正式なルールは次のとおりです。
コードはjavaで記述され、実行中のJREバージョンを出力する必要があります。
コードは、Javaバージョンを検出するために特別に提供されたJDKまたはJRE APIを使用したり、JDKまたはJREバージョンを無料で提供したりしないでください。
コードはリフレクションを使用しないでください。
このコードはHotspot Java SE 5、6、および7でのみ動作する必要がありますが、他のJVMでも動作する場合があります。
コードでは、クラスパスでサードパーティのライブラリを使用しないでください。
コードは、Javaであるかどうかにかかわらず、他のプロセスを開始してはなりません。
コードは環境変数を使用しないでください。
コードは、既存のファイルまたはフォルダーを探すためにファイルシステムを検索してはなりません。
コードは単一のファイルに含まれ、
public static void main(String[] args)
またはを介して呼び出される必要がありますpublic static void main(String... args)
。コードは、JREに存在する非パブリックAPIを使用してはなりません。
コードは、実行中にNoClassDefFoundError、NoSuchMethodError、ClassNotFoundException、またはNoSuchMethodExceptionを生成してはなりません。
コードは、インターネットまたはローカルネットワークから切断されたシステムで実行する必要があります。
バージョンで1つの方法で動作し、別のバージョンで別の方法で動作する理由を説明する必要があります。
得点
最適なソリューションの測定に使用される方法はmax(n / s)です。nは、これらのルール(少なくともバージョン5、6、および7)に違反することなく検出された異なるJavaバージョンの数であり、sは字句トークンの数です。ソリューションで。