端的に言えばJavaの仕様です。
せっかくの機会なので、真面目に言語仕様を紐解いて回答してみます。
Java Language Specification - Chapter 8. Classesには、次のように書いてあります。
#####8.1.6. Class Body and Member Declarations
A class body may contain declarations of members of the class, that is, fields (§8.3), methods (§8.4), classes (§8.5), and interfaces (§8.5).
A class body may also contain instance initializers (§8.6), static initializers (§8.7), and declarations of constructors (§8.8) for the class.
ClassBody:
{ {ClassBodyDeclaration} }
ClassBodyDeclaration:
ClassMemberDeclaration
InstanceInitializer
StaticInitializer
ConstructorDeclaration
ClassMemberDeclaration:
FieldDeclaration
MethodDeclaration
ClassDeclaration
InterfaceDeclaration
;
クラスボディには、次のものしか置けないのです。
0. declarations of members (メンバーの宣言)
・フィールド
・メソッド
・内部クラス
・内部インターフェース
・セミコロン
0. initializer (初期化ブロック)
・静的初期化ブロック
・非静的初期化ブロック
0. declarations of constructors (コンストラクタの宣言)
依って、代入文(厳密に言えば代入式の式文)を置くことはできません。
なお、初期化ブロックを利用して次のように書くことは可能です。
初期化ブロックはインスタンスが作られるとき、コンストラクタより先に呼ばれます。
Java
1public class Human {
2 int age;
3 {
4 age = 33;
5 }
6}
少し複雑な条件で初期化したい際にしばしば使われます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/30 07:51