Create New Class ダイアログとファイルテンプレートを使って、 Android Studio は以下のような新しいクラスと型を素早く作成できるよう手助けをします:
Create New Class ダイアログの各項目を入力してOKをクリックした後、
Android Studio はスケルトンコードを含んだ .java
ファイルを作成します。
このコードには、インクルードしたパッケージ文、必要なインポート文、ヘッダ、クラスや型宣言が記述されています。
次に、このファイルにコードを記述します。
使用するファイルテンプレートによってAndroid Studioが生成するスケルトンコードが変わります。 Android Studio付属のファイルテンプレートを使用することも、それらをカスタマイズして自分の開発プロセスに合わせることもできます。
現状、 Android Studio のダイアログとテンプレートは IntelliJ IDEA のものとは異なります。 バージョン2.2より前の Android Studioでファイルテンプレートをカスタマイズしていた場合、 ダイアログで新たに追加されたフィールドを使いたいのであれば、テンプレートを変更して Android Studioの要件に準拠させる必要があります。
Android Studio では、Create New Classダイアログで新しいクラスと型をどのように作成するかを決定するファイルテンプレートが用意されています。 これらのテンプレートをカスタマイズすることができます。
Android Studio 2.1.xおよびそれ 以前のダイアログではName 欄と Kind 欄がありました。 Android Studio 2.2およびそれ以降のダイアログでは、図1で示すように、Superclass, Interface(s), Package, Visibility, Modifiers, Show Select Overrides Dialogといったオプションがさらに増えています。
図1。Android Studio 2.2 およびそれ以降の Create New Classダイアログ
Android Studio のファイルテンプレートには、Velocity Template Language (VTL)コードとそれら追加オプションを処理する変数が含まれています。 Create New Class ダイアログでは、 アノテーション型, クラス, 列挙体, インタフェース, シングルトンのファイルテンプレートを使用します。
Create New Class ダイアログで使用されているテンプレートをカスタマイズしたことがない場合、 Android Studio のバージョン2.2 及びそれ以降をインストールした時にAndroid Studio が自動的にテンプレートを更新します。
Android Studio 2.2以前の環境にて Create New Classダイアログで使用されるテンプレートをカスタマイズした場合、 新たに追加されたダイアログオプションが使用したいのであれば、次で説明する手順でテンプレートを編集する必要があります。
テンプレートを閲覧してカスタマイズした箇所を探すには、以下の手順を行います。:
それ以外にも、Windows や Linuxの場合は File > Settings > Editor > File and Code Templates > Filesの順で選んでもできます。 Macの場合、Android Studio > Preferences > Editor > File and Code Templates > Filesの順で選んでもできます。
File and Code Templates ダイアログもしくは Preferences or Settings ダイアログが表示されます。 テンプレートの一覧では、内蔵のテンプレート名は太字フォントで表記されます。 カスタマイズしたテンプレートは、青のような強調色で表示されます。
Create New Classダイアログのフィールドを使用したいのであれば、変更内容がAndroid Studio ファイルテンプレートコードに準拠しているか確認してください。 Android Studio 2.2以前の環境で任意のファイルテンプレートをカスタマイズしたことがあり、それらがCreate New Class ダイアログで使用される場合、 新しく追加されたダイアログオプションを使用したいのであればテンプレートを更新する必要があります。 あなたが作成したテンプレートとAndroid Studio ファイルテンプレートコードを比較し、 Android Studio テンプレートのダイアログに適用される部分へ統合します。
VTLを含むテンプレートの詳細については、File and Code Templates とFile and Code Templates Dialogを参照してください。
Android Studio は、Java クラス、列挙体、シングルトンクラス、インタフェース、ファイルテンプレートに基づくアノテーション型を新規に作成する際に手助けをしてくれます。
Java クラスや型を新規に作成するには、以下の手順に沿って作業します。:
それ以外にも、Projectウィンドウ内でJava ファイルもしくはフォルダーを選ぶかコードエディター内でJava ファイルをクリックします。 それからFile > New > Java Classの順でクリックします。
あなたが選んだ項目によって、新しく作成するクラスや型の既定パッケージが決まります。
オートコンプリートは、最初に入力するインタフェース名のみ動作します。 コンマとそれに続くインタフェース名でツールチップエラーが表示されるかもしれませんが、コードの生成には影響ないので無視してください。
package
文を含めることができず、クラスや型がプロジェクトのパッケージ内に配置されません。
この既定値は、あなたがどのように Create New Class ダイアログを起動したかによって変わります。 Projectウィンドウで最初にJava ファイルやフォルダーを選択していた場合、選択した項目のパッケージが既定値になります。 コードエディター上のJava ファイル内で最初にクリックした場合、そのファイルを含むパッケージが既定値になります。
選択したKind に存在しない入力欄は非表示となります。
Android Studio は編集可能なスケルトンコードの記述された Java ファイルを作成します。このファイルはコードエディタで開きます。
メモ: File > New > Singleton の操作もしくは File > New > Java Classの操作でシングルトンクラスを作成することができます。; 後者のやり方の方がより多くのオプションを設定できます。
この章では、VTLスクリプト言語で記述されたAndroid Studioファイルテンプレートコードの一覧を記載し、最後に各変数の定義を記載しています。
Create New Class ダイアログで入力した値は、このテンプレートの変数値に代入されます。
Note that the lines that begin with
#if (${VISIBILITY}
extend all the way to the open brace (
{
).
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end @interface ${NAME} #if (${INTERFACES} != "")extends ${INTERFACES} #end { }
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end #if (${ABSTRACT} == "TRUE")abstract #end #if (${FINAL} == "TRUE")final #end class ${NAME} #if (${SUPERCLASS} != "")extends ${SUPERCLASS} #end #if (${INTERFACES} != "")implements ${INTERFACES} #end { }
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end enum ${NAME} #if (${INTERFACES} != "")implements ${INTERFACES} #end { }
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end enum ${NAME} #if (${INTERFACES} != "")implements ${INTERFACES} #end { #end { }
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK} #end #parse("File Header.java") #if (${VISIBILITY} == "PUBLIC")public #end class ${NAME} #if (${SUPERCLASS} != "")extends ${SUPERCLASS} #end #if (${INTERFACES} != "")implements ${INTERFACES} #end { private static final ${NAME} ourInstance = new ${NAME}(); #if (${VISIBILITY} == "PUBLIC")public #end static ${NAME} getInstance() { return ourInstance; } private ${NAME}() { } }
テンプレートファイルの各変数は、Javaファイル生成時にAndroid Studioが実際の値と置き換えます。 実際の値は、Create New Classダイアログであなたが入力します。 テンプレートは、使用可能な以下の変数を持っています。:
IMPORT_BLOCK
- スーパークラスやインタフェースをサポートするのに必要なimport
文を改行で区切った一覧、もしくは空の文字列(""
)。
例えば、Runnable
インタフェースを実装して継承は何もしない場合、この変数は "import java.lang.Runnable;\n"
になります。
Runnable
インタフェース を実装して Activity
クラスを継承する場合、この変数は"import android.app.Activity;\nimportjava.lang.Runnable;\n"
になります。
VISIBILITY
- このクラスをパブリックアクセスにするかどうか。この変数は PUBLIC
もしくは PACKAGE_PRIVATE
いずれかの値になります。
SUPERCLASS
- 一つのクラス名、もしくは空。この値が入っていた場合は、新規作成するクラス名の後にextends ${SUPERCLASS}
の文が追加されます。
INTERFACES
- コンマで区切られたインタフェースの一覧、もしくは空。この値が入っていた場合はスーパークラスの後ろに、もしくはスーパークラスを継承していない場合は新規作成するクラス名の後ろに、 implements ${INTERFACES}
の文が追加されます。
インタフェースとアノテーション型の場合、インタフェースにはextends
キーワードが付きます。
ABSTRACT
- このクラスを抽象化するかどうか。この変数は TRUE
もしくは FALSE
いずれかの値になります。
FINAL
- このクラスに final 修飾子を付けるかどうか。この変数は TRUE
もしくは FALSE
いずれかの値になります。