JAVA関連のことを調べてみた2023年02月06日

JAVA関連のことを調べてみた2023年02月06日

【google-java-format】すべてのファイルを一発でフォーマットする方法

# はじめに

[google-java-format](https://github.com/google/google-java-format)は、Javaのソースコードをフォーマットするプログラムです。
[Google Java Style](https://google.github.io/styleguide/javaguide.html)に基づいて、フォーマットします。

IntelliJやEclipseなどのプラグインもありますが、ここではコマンドラインツールを利用します。

google-java-formatには、さまざまなオプションがありますが、
「すべてのファイルを一発でフォーマットする」ためのオプションはありません。

オプションの一覧

“`:オプションの一覧
Usage: google-java-format [options] file(s)

Options:
-i, -r, -replace, –replace
Send formatted output back to files

元記事を表示

Valueを付与した変数にJUnitでモックする

# Valueを付与した変数にJUnitでモックする方法

## 概要
– `@Value`を付与した変数を扱うクラスのテストを実施した際、`@Value`の変数の値がテスト時のみnullとなってしまう事象が発生

– 以下テスト対象のクラス

“`java
@Component
public class HogeService {

@Value(“${sample.variable}”)
private String sampleVariable; ← ここの変数がテストでnullで返ってくる

“`

↑の件、少し解決につまづいたので、解決方法を記載

## 結論

– `org.springframework.test.util.ReflectionTestUtils`を利用することでmockできる
“`java
ReflectionTestUtils.setField(instance, “name”, “value”, String.class);
“`

### サンプル

– `@Value`を利用しているクラス
“`java
@Compone

元記事を表示

8.2 finalと定数(Java Basic編)

### はじめに

#### 自己紹介

皆さん、こんにちは、斉藤賢哉と申します。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」(2007年)](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」(2017年)](https://amzn.asia/d/9avaCyF)

いずれも**Java EE**(**Jakarta EE**)を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸い

元記事を表示

Instant.toString() を JST で表示する

~~そんなオプションが、、、無い~~

ByteBuddy を利用した方法
===

* ByteBuddy を使うと Class の Method 内を書き換える事ができる。
* Class が既に Load されている場合を考えると / Boostrap class loader で読み込まれる class を読み替えるには Java Agent が必要。
* 2 秒ぐらいかかる。。。もっさりしてる。

“`kotlin

object InstantsToStringFormatUpdate {
/**
* This byte code is equal to following code:
*
* “`java
* class Instant {
* public String toString() {
* return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(
* OffsetDateTime.ofIn

元記事を表示

[Java] Collectionクラスまとめ ~List, Set, Mapの実装と使い方~

## 要約
Collectionクラスには主に3つのインターフェイスが用意されています。

* **[List](#list)** : 順番通りに格納 (ex. [ArrayList](#arraylist), [LinkedList](#linkedlist))
* **[Set](#set)** : バラバラに格納 (ex. [HashSet](#hashset), [TreeSet](#treeset))
* **[Map](#map)** :Keyに対応づけて格納 (ex. [HashMap](#hashmap), [TreeMap](#treemap))

## List

Listは**インターフェース**と呼ばれる抽象メソッドのみをもったものです。
Listはあくまでもインタフェースであるため、インスタンスの生成ができません。

よって、以下のようには書けません。
“`Java
//間違い
List list = new List();
“`
Listインターフェイスを実装したクラスは[ArrayList](#arraylist)

元記事を表示

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile

Spring BootのプロジェクトをMacで起動しようとした時のメモ

“`
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile
“`

`./mvnw spring-boot:run`とするとエラーになった。

### 原因
pomに書かれているjavaのバージョンと実際に実行する時に使われているjavaのバージョンが一致しないため。

### 解決策
pomに書かれているバージョンのjavaをインストールしてパスを通す!!

元記事を表示

[Java] length, length(), size()の違い

## 要約
| | 種類 | 対象 | 対象の例 |
|———-|—|—|—|
| [length](#length) | フィールド | 配列 |int[], double[], String[]|
| [length()](#length) | メソッド | 文字列 | String, StringBuilder|
| [size()](#size) | メソッド | コレクション |List, ArrayList, Set|

[フィールドvsメソッド](#フィールドvsメソッド)

## length
`.length`は配列のフィールド(情報)に直接アクセスします
“`java
//配列の長さ
int[] nums = {4, 10, 7};
nums.length; // 3
“`

## length()
`.length()`はメソッドを呼び出すことで、文字列オブジェクトのフィールドメンバーにアクセスします
“`java
//文字列の長さ
String str = “abcde”
str.length(

元記事を表示

SpringBoot ContextListenerクラス内でなぜかAutorewiredが機能しない時に実施した対処

SpringBootでAutowiredがうまく機能せずとても困たので忘備録としてメモ。
@Autowiredで生成されるはずのBean(インスタンス)にアクセスすると何故かnullPointerExceptionが発生。
ContextListenerクラスのcontextInitializedメソッドの中でのみ発生した。他のクラスでは問題なくAutowiredを利用してBeanが生成されている状態。

原因は未だに分からないのだが、以下のようにServletContextクラスや、WebApplicationContextクラスを利用することでBeanを取得することができた。

“`java

import jp.co.com.sampleApplication.SampleField;

@WebListener
public class SampleApplicationContextListener implements ServletContextListener {

//前提としてSampleFieldには@Componentを付与しているが以下

元記事を表示

【Java】Mapからリクエストパラメータを含むURLを生成する

# はじめに

ベースのURLと`Map`から以下のようなGetリクエストのURLの生成をメモがてら記事にします。

“`
https://hogehoge?param1=aaa&param2=bbb
“`

# 実装

“`java
/**
* リクエストURLを生成する.
*
* @param endpoint URLのエンドポイント
* @param param GETリクエストに含めるパラメータ
* @return URL
*/
private String buildUrl(String endpoint, Map param) {
StringBuilder url = new StringBuilder(this.httpConfig.getUrl());
url.append(endpoint);
if(param.isEmpty()) {
// paramが空の場合はそのまま返す
return url.toString();
}

//

元記事を表示

Tomcat構築やってみる

# 〜初心者の備忘録〜

## 情報
・Eclipse : Version 2022-12 (4.26.0)
・Java : Version 18

## 構築フロー
**①「動的Webプロジェクトを作成します」をクリック**
![スクリーンショット 2023-02-05 15.32.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1886978/b1dd2975-8f88-8810-20b3-d4961ca75564.png)

**②「プロジェクト名」に任意の名前を入力し「完了」をクリック**
![スクリーンショット 2023-02-05 15.32.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1886978/e4f82d4a-8ca0-33ef-ff06-28733c361b66.png)

**③プロジェクトを右クリックし、「新規」 > 「HTMLファイル」を選択し、htmlファイルを作成**

元記事を表示

ファイルをバックアップ

FileBack

“`
package jp.co.main;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.apache.commons.io.FilenameUtils;

public class FileBack {

public static void main(String[] args) {
String filepath = null;
for (String string : args) {
File file = new File(string);

if (filepath == n

元記事を表示

オブジェクト指向とは何かを具体的に書いてみた

# はじめに
この記事ではオブジェクト指向についてまとめてみました。

# この記事の対象者
  未経験〜Java開発3年未満

# オブジェクト指向とは
オブジェクト指向で検索すると様々な解説が出てくるが、下記の内容でオブジェクト指向を表すことにした。

**オブジェクト指向は設計手法の一つである。**

ここで示す設計とは実装の準備のこと。
具体的に設計とは分割と結合を考えるである。
設計の目的はコスト削減をすること。

設計手法には大きく2つのアプローチがある。

**オブジェクト指向(インサイドアウト)**
データに着目して内側(データの裏側)から先に作ること。(ビジネスロジック = ビジネス上のルール = データの扱い方)

メリット
・仕様変更に強い。
デメリット
・設計スキルのレベルが求められる。

**構造化設計(アウトサイドイン)**
業務の流れに基づいて、設計する。日本で多く使われている設計。

メリット
・業務の流

元記事を表示

Leetcode 438. Find All Anagrams in a String

https://leetcode.com/problems/find-all-anagrams-in-a-string/

## アプローチ
### Brute force

“`java
class Solution {
public List findAnagrams(String s, String p) {
List result = new ArrayList<>();
int len = s.length() – p.length();
int pLen = p.length();

int[] cnt = new int[26];

for (char pChar : p.toCharArray()) {
cnt[pChar – ‘a’]++;
}

for (int i = 0; i <= len; i++) { int[] cntTemp = new int[26]

元記事を表示

MVCモデルに沿ったデータ処理

# はじめに
 初めまして。佐藤佑哉です。
 今回は授業の中でMVCモデルの説明があったので、備忘録として残したいなと思います。気になる箇所があったらコメントなどよろしくお願い致します!
# 環境
Apache NetBEans IDE:15
Java:17.0.4.1
Windows11・バージョン10.0
MySQL:8.0.31

# MVCモデルとは
役割毎にModel,View,Controllerに分割してコーディングを行うモデル
– Model:システム中でビジネスロジックを担当
– View:表示や入出力と行った処理を担当
– Controller:ユーザの入力に基づき、ModelとViewを制御
引用:https://qiita.com/s_emoto/items/975cc38a3e0de462966a

## MVCモデル概念図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989029/793a9336-2a87-05f0-cae6-ec2dca307e19.p

元記事を表示

21.4 Java標準のその他のツール(Java Basic編)

### はじめに

#### 自己紹介

皆さん、こんにちは、斉藤賢哉と申します。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」(2007年)](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」(2017年)](https://amzn.asia/d/9avaCyF)

いずれも**Java EE**(**Jakarta EE**)を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸い

元記事を表示

14.1 Eclipseによる開発支援機能とデバッグ(Java Basic編)

### はじめに

#### 自己紹介

皆さん、こんにちは、斉藤賢哉と申します。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」(2007年)](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」(2017年)](https://amzn.asia/d/9avaCyF)

いずれも**Java EE**(**Jakarta EE**)を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸い

元記事を表示

9.1 レコードクラス(Java Advanced編)

### はじめに

#### 自己紹介

皆さん、こんにちは、斉藤賢哉と申します。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」(2007年)](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」(2017年)](https://amzn.asia/d/9avaCyF)

いずれも**Java EE**(**Jakarta EE**)を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸い

元記事を表示

8.3 アノテーションの仕組みとAPI(Java Advanced編)

### はじめに

#### 自己紹介

皆さん、こんにちは、斉藤賢哉と申します。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」(2007年)](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」(2017年)](https://amzn.asia/d/9avaCyF)

いずれも**Java EE**(**Jakarta EE**)を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸い

元記事を表示

8.2 リフレクションの仕組みとAPI(Java Advanced編)

### はじめに

#### 自己紹介

皆さん、こんにちは、斉藤賢哉と申します。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」(2007年)](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」(2017年)](https://amzn.asia/d/9avaCyF)

いずれも**Java EE**(**Jakarta EE**)を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸い

元記事を表示

8.1 クラスローダーの仕組みとClassクラス

### はじめに

#### 自己紹介

皆さん、こんにちは、斉藤賢哉と申します。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」(2007年)](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」(2017年)](https://amzn.asia/d/9avaCyF)

いずれも**Java EE**(**Jakarta EE**)を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、(Javaに限定されない)比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸い

元記事を表示

OTHERカテゴリの最新記事