JavaのCaseFormatクラスとは?Guavaで文字列のケース形式を変換する方法
CaseFormatは、Googleが提供するJavaライブラリ「Guava」に含まれるユーティリティクラスの一つです。このクラスを使うと、ハイフン区切り、アンダースコア区切り、キャメルケースなど、さまざまなASCIIケース形式の文字列を相互に簡単に変換できます。
命名規則の異なるシステム間でデータを受け渡す際や、定数名・変数名・JSONキーなどを一括して整形したい場合に非常に便利なクラスです。
CaseFormatで利用できるケース形式
CaseFormatクラスには、以下の5つの列挙型定数が用意されています。それぞれの形式と表記例を見てみましょう。
| 定数名 | 形式 | 表記例 |
|---|---|---|
| LOWER_HYPHEN | 小文字 + ハイフン区切り | test-data |
| LOWER_UNDERSCORE | 小文字 + アンダースコア区切り | test_data |
| LOWER_CAMEL | ローワーキャメルケース(先頭のみ小文字) | testData |
| UPPER_CAMEL | アッパーキャメルケース(パスカルケース) | TestData |
| UPPER_UNDERSCORE | 大文字 + アンダースコア区切り | TEST_DATA |
主なメソッド
CaseFormatでは、変換を行うためのto()メソッドが中心となります。
- to(CaseFormat format, String str):呼び出し元の形式から、引数で指定した形式へ文字列を変換して返します。
- converterTo(CaseFormat targetFormat):Converterオブジェクトとして変換処理を再利用できるようにします。
使用例
それでは、実際にCaseFormatクラスを使用したサンプルプログラム(GuavaTester.java)を見てみましょう。
import com.google.common.base.CaseFormat;
public class GuavaTester {
public static void main(String args[]) {
GuavaTester tester = new GuavaTester();
tester.testCaseFormat();
}
private void testCaseFormat() {
// ハイフン区切りからローワーキャメルケースへ変換
System.out.println(CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, "test-data"));
// アンダースコア区切りからローワーキャメルケースへ変換
System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "test_data"));
// 大文字アンダースコアからアッパーキャメルケースへ変換
System.out.println(CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "TEST_DATA"));
}
}
コンパイル方法
作成したクラスをjavacコンパイラでコンパイルします。
C:\Guava>javac GuavaTester.java
続いて、プログラムを実行します。
C:\Guava>java GuavaTester
実行結果
上記のプログラムを実行すると、次のような出力が得られます。
testData testData TestData
このように、to()メソッドの第一引数に元の形式、第二引数に変換後の形式を指定するだけで、文字列のケース形式を自在に変換できることがわかります。
まとめ
CaseFormatクラスを活用すれば、複雑な文字列操作を自前で実装することなく、簡潔かつ安全にケース形式の変換を行えます。特に、データベースのカラム名(スネークケース)とJavaのフィールド名(キャメルケース)をマッピングする場面などで重宝するので、ぜひ活用してみてください。
-
Javaのsuperキーワードとは?使い方とサンプルコードを徹底解説
JavaのsuperキーワードとはJavaにおけるsuperキーワードは、サブクラスから直接の親クラス(スーパークラス)のメンバーやコンストラクタへアクセスするために使われる重要なキーワードです。主な役割は以下の3つです。親クラスのインスタンス参照:super変数は、直近の親クラスのインスタンスを参照します。親クラスのメソッド呼び出し:superを使うことで、オーバーライドされた親クラスのメソッドを呼び出せます。親クラスのコンストラクタ呼び出し:super()は親クラスのコンストラクタとして機能し、子クラスのコンストラクタ内では必ず最初の行に記述する必要があります。特に、オーバーライドされたメ
-
Javaの集約(Aggregation)とは?HAS-A関係の基本をわかりやすく解説
Javaにおける集約(Aggregation)とは、オブジェクト指向プログラミングにおける「HAS-A関係」を表す概念です。あるクラスが、別のクラスのオブジェクトを「持っている(has-a)」という関係性を指します。まずは具体的な例を見てみましょう。集約のコード例public class Vehicle{} public class Speed{} public class Van extends Vehicle { private Speed sp; }この例では、VanクラスがSpeedクラスのインスタンスをフィールドとして保持しています。つまり、「VanはSpeedを持っている(