GitEngHar / WorkUp

LearnJava
0 stars 0 forks source link

多くのコンポーネントの集約 ApacheCommons #10

Closed GitEngHar closed 3 weeks ago

GitEngHar commented 4 months ago

拡張ユーティリティなため、外部からダウンロード必要
https://commons.apache.org/proper/commons-lang/

Maven で利用する場合は pom.xmlに以下のように記入

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.4</version>
</dependency>
GitEngHar commented 4 months ago

機能紹介

空文字判定

String test1 = null;
if(StringUtils.isEmpty(test1)){
}

空文字ではない判定

空白文字も空として判定

オブジェクトの型やフィールドの一致を判断する

HashCodeBuilder.reflectionHashCode(this);
EqualsBuilder.reflectionEquals(this);

変化する特定のフィールド(乱数 や 時刻)を比較対象から除外することができる

# "versionNo"というフィールドを除外する
HashCodeBuilder.reflectionHashCode(this,"versionNo");
EqualsBuilder.reflectionEquals(this,"versionNo");

複数のフィールドを同時にセットする

before

this.mail = org.mail
this.name = org.name
this.weight = org.weight

after

BeanUtils.copyProperties(this,org)

ディープコピー

dozer.sourceforge を利用することであるゆる階層でディープコピーを利用できる
シャローコピーを利用すると、参照元の値は同じなので元を書き換えた場合他の変数でも変化した値が参照される

CSVで複数のデータを保存

正しくCSVのデータを処理するための手助けをしてくれるツール
Super CSV

読み込みには CellProcessor クラスを用いて定義する

GitEngHar commented 4 months ago

jackson を 実際に触ってみる

環境準備

  1. こちら より jackson-annotations , core , databind の jar をダウンロード

  2. settings.jsonでライブラリの参照先を確認

{
    "java.project.sourcePaths": ["src"],
    "java.project.outputPath": "bin",
    "java.project.referencedLibraries": [
        "lib/**/*.jar" <-ここが参照先
    ]
}
  1. 参照先に jackson ディレクトリを作成し、jsonを格納

image

実行する

ディレクトリ構成
image

Employee (Jsonデータを格納しておくコード)

import java.util.List;

public class Employee {
    public String name;
    public Integer age;
    public List<String> licenses;

    public String getName(){
        return this.name;
    } 
}

App.java

import java.io.File;
import java.util.Arrays;
import java.util.Map;

import com.fasterxml.jackson.databind.ObjectMapper;

public class App {
    public static void main(String[] args) throws Exception {
        createJson();
    }
    public static void readJson() throws Exception{
        File file = new File("./employee.json");
        ObjectMapper mapper = new ObjectMapper();

        Employee emp = mapper.readValue(file,Employee.class);
        System.out.println(emp.getName());

        Map<?,?> map = mapper.readValue(file, Map.class);
        System.out.println(map.get("age"));
    }
    public static void createJson() throws Exception{
        Employee emp = new Employee();
        emp.name = "TestUser01";
        emp.licenses = Arrays.asList("CKA","CKS");
        emp.age = 20;

        File file = new File("newEmp.json");
        ObjectMapper mapper = new ObjectMapper();
        mapper.writeValue(file,emp);
    }
}

employee.json 読み込み用のjsonデータ

{
    "name"      : "EngHar",
    "age"       : 25,
    "licenses"  : ["CKA","CKAD"]
}

実行結果

readJsonメソッド

EngHar
25

createJsonメソッド
newEmpが作られファイルの中身は以下の通り

{"name":"TestUser01","age":20,"licenses":["CKA","CKS"]}