web-dev-qa-db-ja.com

レガシーJava構文

1997年のJava Code Conventions文書 を読んで、変数命名規則に関するP16の例でこれを見ました:

int i;
char *cp;
float myWidth;

2番目の宣言は興味深いものです。私にとっては、Cでポインターを宣言する方法によく似ています。Java 8でコンパイルすると構文エラーが発生します。

好奇心から:これは今まで有効な構文でしたか?もしそうなら、それはどういう意味ですか?

34
Harry King

これは、Java固有の追加を加えたCライクな言語の汎用コーディングスタイルドキュメントのようです。たとえば、次のページも参照してください。

代入演算子は、等価演算子と簡単に混同される可能性がある場所では使用しないでください。例:

if (c++ = d++) { // AVOID! Java disallows.
    …
}

とにかく構文エラーである何かを避けるようにプログラマーに伝えることは意味がないので、これから引き出すことができる唯一の結論は、ドキュメントが100%Java固有ではないということです。

別の可能性は、JREおよびJDKのC++部分を含む、Javaシステム全体のコーディングスタイルとして意図されていたことです。

Oracleが登場するずっと前から、Sunはコーディングスタイルドキュメントを放棄したことに注意してください。彼らは、言語の使い方を指定するのではなく、言語isを指定することを抑制しました。

5
Jörg W Mittag

無効な構文!

コピー/貼り付けの間違いです。

変数のトークン(*)は、ポインターを使用するため、Cでのみ適用できますが、Javaはポインターを使用しません。

また、トークン(*)はJavaの演算子としてのみ使用されます。

0
Karthik P