私はこのフォーマットlong val = 1_000_000L;
がjavaで有効であるという事実を承知していますが、非構成型であるとわかったのは、String
として渡された場合、このフォーマットを解析しないLong#parseLong
メソッドの動作です。私はいつも例外を得る:javaは、アンダースコアでLong形式を受け入れますが、Stringを使用して構文解析しないのはなぜですか?
String h = "1_000_000L";
long val = 1_000_000L;
System.out.printf("this a valid format : %d\n", val);
try {
Long m = Long.parseLong(h);
System.out.println(m);
} catch (NumberFormatException e) {
System.out.printf("cannot parse this number : %s\n", h);
}
NB。私は個人的なJavaコンパイラのようなものを構築しており、アンダースコア形式を取り除かずに動作したいと思っています。
ハハー...以前はJavaプログラムでアンダースコアを使ったことはありません。また、あなたの個人用Javaコンパイラで幸運を祈ることができます。私は個人的なJavaの方言(JavaX)を作ったが、Javaのソースコードに変換してから、Eclipseコンパイラを呼び出す。 –
長いAPIは長い時間前に決定されました。既存のプログラムのセマンティクスを変更することによって、既存のプログラムを破壊する危険性があります。 –
コンパイラの作業のこの時点で、トークナイザの詳細を学ぶことをお勧めします。 –