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

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

Java + Springで個人ChatGPT作ってみる

# タイトル

元記事を表示

日本語トランスコンパイラ言語 Re:Mind(リマインド)の試作バージョン(ターゲット言語Java,C#,Mind)をC#で実装してみた

# はじめに
2023年の1月下旬よりQitta様へ参加させていただき、[自作言語 Re:Mind(リマインド)の企画趣旨をQitta内の記事](https://qiita.com/mylifewithviolin/items/9d58db8a101807c19bde)でご説明させていただいております。まだ実装がなにもないので、そろそろ試作に着手しようかと考えておりました。本記事はその試作品の初版の実装情報で、ターゲット言語をJava,C#,Mindとしています。この状態ははっきり言っておもちゃにすぎません。おもちゃ状態をいつごろ脱せるかはわかりませんが、[仕様](https://qiita.com/mylifewithviolin/items/9a6abbab62c0f5e27d4b)としてはめちゃめちゃおもちゃというわけではないのでインクリメンタル開発を続行する所存でございます。

## この記事内容の作業目的
本試作範囲は[策定仕様](https://qiita.com/mylifewithviolin/items/9a6abbab62c0f5e27d4b)のごくごく一部です。タ

元記事を表示

Javaの条件分岐について学習してみた

# 概要

Javaの条件分岐について学習してみました。以下のページを参考にしました。

条件分岐

https://www.javadrive.jp/start/if/

if文を使った条件分岐

https://www.javadrive.jp/start/if/index1.html

switch文を使った条件分岐

https://www.javadrive.jp/start/if/index4.html

# まとめ

何かの役に立てばと。

元記事を表示

不思議なコード ~java ジェネリクス型の型消去~

# この記事の目的
簡単なコード例から、javaのジェネリクス型における型消去(Type Erasure)という仕組みを見ていきます。

ちょっと変なコードがある→面白そう と感じてもらえればうれしいです。

この記事では、型消去は簡単な解説にとどめます。
詳しい説明は、他の記事や公式ドキュメントに譲ります。
 参考:java 公式ドキュメント(Type Erasure)
 https://docs.oracle.com/javase/tutorial/java/generics/erasure.html
# まずはコード
~~~java: Container.java
public class Container{
V value;
public void setValue(Object value){
this.value=(V)value;
}
}
~~~
~~~java:Main.java
public class Main{
public static void main(String… arg){
C

元記事を表示

springdoc-openapi v2.1.0はByteArrayHttpMessageConverterが無いとUnable to render this definitionになる

# 現象
Spring Boot 3対応のついでに“`org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0“` にバージョンを上げたところswagger-uiが下記の表示になり正常に動作しなかった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31934/105c0dfa-cd28-5b24-4a5a-17011d28d798.png)

“`
Unable to render this definition
The provided definition does not specify a valid version field.

Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: “2.0” and those that match openapi: 3.0.n (for

元記事を表示

怖くないstream()入門

最近変数に破壊的な操作をするのがちょっと怖くなったり、なんもわからないなりに副作用を減らしてコードを書きたいという欲が出てきたと同時に、周りにstream()を活用してコードを書いている人があんまりいないな、と感じたので自分の書きたい欲を発散すると同時に布教がてらこの記事を書いています。

# stream()とは
「そもそもstream()って何?」という人のためにものすごくざっくり説明しておくと、stream()はコレクション(List,Set,Mapなど)に対して様々な処理を行うためのものです。stream()のメソッドを使うと例えば「すべての要素を2倍する」であったりとか、「要素の中で〇〇を含むものだけを取り出す」といったような操作をすることができます。

勘のいい人であれば「それforとifでできるよね」と思ったと思うのですが、その通りです。ではなぜわざわざstream()を使うのでしょうか。メリットやデメリットをいくつか紹介したいと思います。

## stream()のメリット・デメリット

### オブジェクトの書き換えが起こらない
stream()を用いた場合、元のオブ

元記事を表示

[Java] 文字列処理

# 文字列処理とは
* 文字列の情報を処理するさまざまな方法をそう総称して、`文字列処理`,`テキスト処理`という
# 基本的な文字列操作
## equals()
* 内容が等しいか調べる
“`java:equals()
public boolean equals(Object o)
“`
## equalsIgnoreCase()
* 大文字、小文字を区別せず内容が等しいか調べる
* Ignore(イグノア)は「無視する」
* 大文字、小文字の区別のことを、文字の`ケース(case)`という
“`java:equalsIgnoreCase
public boolean equalsIgnoreCase(String s)
“`
## length()
* 文字列の長さを調べる
“`java:length()
public int length()
“`
## isEmpty()
* 空文字か(長さが0)かを調べる
“`java:isEmpty()
public boolean isEmpty()
“`
# サンプルコード
“`java:文字列調査メソッドの使用例

元記事を表示

【Java】学習記録②(入力値の受け取り)

## 文字列データの受け取り
“`Java
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String text = scan.next();
System.out.println(text);
}
}
“`

## 整数データの受け取り
“`Java
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int number = scan.nextInt();
System.out.println(number);
}
}
“`

## Scannerのcloseについて

元記事を表示

Javaの繰り返し処理を学習してみた

# 概要
Javaの繰り返し処理を学習してみました。以下のページを参考にしました。

繰り返し処理

https://www.javadrive.jp/start/for/

for文を使った繰り返し処理

https://www.javadrive.jp/start/for/index2.html

while文を使った繰り返し処理

https://www.javadrive.jp/start/for/index6.html

do..while文を使った繰り返し処理

https://www.javadrive.jp/start/for/index7.html

拡張for文(for-each文)を使って要素を順に取得する

https://www.javadrive.jp/start/for/index8.html

break文の使い方

https://www.javadrive.jp/start/for/index9.html

continue文の使い方

https://www.javadrive.jp/start/for/index10.html

# まとめ
何か

元記事を表示

WSL2 で IntelliJ を使った Java 環境構築

# 目次
[1. はじめに](#1-はじめに)
[2. 環境](#2-環境)
[3. SDKMAN のインストール](#3-sdkman-のインストール)
[4. Java のインストール](#4-java-のインストール)
[5. Maven のインストール](#5-maven-のインストール)
[6. JetBrain ToolBox のインストール](#6-jetbrain-toolbox-のインストール)
[7. IntelliJ IDEA Community 版のインストール](#7-intellij-idea-community-版のインストール)
[8. IntelliJ 起動](#8-intellij-起動)
[9. まとめ](#9-まとめ)
[参考文献](#参考文献)

# 1. はじめに
社会人になって本格的に Java での開発がはじまりました.大学と研究室では Python メインで研究していたため VScode 信者だったのですが,まあわがままばっか言ってられなくて IntelliJ を使わないといけない状況になりました.会社では Mac で開発しているのです

元記事を表示

SwaggerでJavaのドキュメントを作ってみる

# はじめに

大きな開発をする際に開発内容の説明するのって難しいですよね。
もしかすると世間にはいい感じのドキュメントの作り方があるかもしれないし、
なんなら自分好みのドキュメント生成用アプリなんかを作るのも1つの手だと思います。

ただできるだけ素早く手軽に手間も抑えたい!
という気持ちでたまたま最近使い始めていたSwaggerを使っていい感じにドキュメントが作成できないかと考えたので
今回はJavaの開発内容をSwaggerを使ってドキュメント化してみたいと思います。

# Swaggerについて

Swaggerについては公式ドキュメントやほかにもいろいろな記事があるので詳細は省きますが、
簡単にまとめるとOpenAPI仕様のAPIについて設計やドキュメントの作成などが可能なツールのセットとなります。

https://swagger.io/docs/specification/about/

ツールのセットということで実際どういったツールがあるかというと下記のようなツールがあるようです。
|名称 |概要 |
|:————|:————-|
|Sw

元記事を表示

【JavaGold】SystemクラスとConsoleクラス

## 概要
コンソールからの入出力をサポートするクラスとして以下がある。

– `java.lang.System`クラス
– `java.io.Console`クラス

#### `java.lang.System`クラス
`InputStream‘オブジェクトである`in`フィールドを使用し、Javaプログラムで標準入力(Standard Input)を取得する。

`in`フィールドの宣言は以下である。

“`java
public final static InputStream in;
“`

`in`フィールドは`java.io.InputStream`クラスのインスタンスであり、デフォルトではコンソールからの入力を受け取る。
Javaプログラムでは、`System.in`を使用してユーザーからの入力を読み取ることができる。

`InputStream`クラスの`read()`メソッドを使用して、1バイトずつ標準入力からデータを読み込むことや、`Scanner`クラスなどを使用してより高レベルの入力操作を行うこともできる。

##### 例

“`java
impor

元記事を表示

Java Gold攻略法

Oracle Certified Java Programmer Gold SE 11に合格したので、僕なりの攻略法をまとめてみました。

[勉強方法](#勉強方法)
[試験問題の傾向](#試験問題の傾向)
[暗記のコツ](#暗記のコツ)
[消去法について](#消去法について)
[その他大事なこと](#その他大事なこと)
[最後に](#最後に)

## 勉強方法

勉強期間:約2か月(週3~5日 30分~1時間)
正答率:85%

使用したのは下記です。
– 黒本
– エクセル
– Eclipse

他の本は使用していないのでわかりませんが、黒本で十分という声が多いと思います。
エクセルに回答を記入し、各章毎に正答率がわかるようにしていました。
Eclipseは動作確認でたまに使用していました。

黒本は5~6周くらいしたと思います。

## 試験問題の傾向

僕の感覚ですが、下記割合でした。

|問題 |出題率 |
|—|—|
|見たことない問題 |8% |
|ラムダ式、ストリームAPI |70% |
|その他黒本関連の問題 |22% |

最初の10問くらいは見た

元記事を表示

アシスタントアプリとして起動できるAndroidアプリの作成

# はじめに
この記事ではAndroidアプリをアシスタントアプリとして登録したい時に設定するコードについて紹介します。

例としてコードを掲載していますが、まだ開発途中であるため、一部機能が使用できず、また強制停止が頻発します。あくまで参考程度でお使いください。

# Androidスマホのショートカット機能
Androidスマホには、画面の右下から中央下に指をスライドしたり、ホームボタンを長押しするとアシスタントアプリが起動するショートカットが実装されています。また、端末によっては、アシスタントキー(SHARP AQUOS)や、Googleアシスタントボタン(SONY Xperia)などの、アシスタントアプリを起動するためのボタンが存在します。

しかし、あまり使わないんですよね。この機能。
じゃあ別のアプリを割り当てたい。

でも残念なことに、これらのショートカットは、アシスタントアプリとして登録されているアプリでないと、起動させられないんです。
【Eclipse】白黒のコンソールに色をつける方法

# はじめに
表題の情報が意外とネット上に少なかったため、この記事が
同じように「コンソールに色をつけたい」という方の役に立てば幸いです。

## before
![20230721-104934.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/c707d21b-8018-d473-6e33-69a21a0c1aa7.png)

## after
![20230721-105215.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/cc8adb7b-dfa0-11c9-fd13-a7be3c64e46a.png)

# 手順
設定(Preference) → Ansi コンソール → 「使用可能」にチェックを入れる → 適用して閉じる
![20230721-105423.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

[Java] super()とthis()

# はじめに
### コンストラクタとは
* 「public クラス名」の形したメソッド(戻り値の型を指定しない「void」も)
* クラスのインスタンス生成時に実行されるメソッド

# super()の概要
* super()は親クラスのコンストラクタを呼び出す
* super() は親クラス(スーパークラス)のコンストラクタを呼び出す。
* 親クラスと子クラスの関係において、子クラスのコンストラクタが実行される前に親クラスのコンストラクタを先に呼び出す必要がある
“`java:super()
public SubClass() {
super(); // 親クラスのデフォルトコンストラクタを呼び出す
}
“`

# this()の概要
* this() は同じクラス内の別のコンストラクタを呼び出す。
* 一つのコンストラクタ内で他のコンストラクタを呼び出すことができる。
“`java:this()
public SubClass(int num) {
this(); // 同じクラスのデフォルトコンストラクタを呼び出す
}
“`

# おわり
### 制約

元記事を表示

Synchronizeとは

## Synchronize

:::note
Javaのマルチスレッド環境でスレッドセーフ(Thread-safe)な動作を実現するための機能
**スレッドが同時に共有されるリソースにアクセスするとき
→スレッドの実行順序や同時実行による競合状態を制御するために使用**
:::

### 具体的な状況の例

Javaでは、複数のスレッドが同時に共有データにアクセスすることがある

複数のスレッドが同時にデータを変更しようとすると**データの整合性が損なわれたり、競合状態が発生**したりすることがある

このような競合状態を防ぐために使用
***

synchronizeキーワードを使用
→メソッドやブロックをsynchronizedできる

– synchronizeされたメソッドやブロックは、**同時に1つのスレッドしか実行不可**
– スレッドがsynchronizedされた領域に入ると、**他のスレッドはその領域の終了を待つ**ことになる

## 例 Javaのsynchronize

“`java
public class Counter {
private int

元記事を表示

【JavaGold】ストリームの基底クラス

## 主なクラス

ストリーム(データの入出力)を扱う`java.io`パッケージには以下の基底クラスがある。

– 文字ストリームを扱うクラス
– `java.io.Reader`クラス
– `java.io.Writer`クラス
– バイトストリームを扱うクラス
– `java.io.InputStream`クラス
– `java.io.OutputStream`クラス

#### `java.io.Reader`クラス

テキストファイルや文字データを読み取るための共通のメソッドを提供する。
このクラスは抽象クラスであるため、具象サブクラス(例えば`FileReader`や`BufferedReader`など)を使用してファイルから文字データを読み取る。

##### 主なメソッド

– `int read()`:
次の文字を読み込んで`int`型で返す。
ファイルの終端に達した場合は`-1`を返す。
– `int read(char[] cbuf)`:
指定した文字配列にデータを読み込み、読み込んだ文字数を返す。
ファイルの終端に達した場合は`-1`を返

元記事を表示

【JavaGold】isDirectoryメソッド

## 概要
指定されたパスがディレクトリであるかどうかを判定する。

`isDirectory()`メソッドは以下のように定義されている。

“`java
public boolean isDirectory()
“`

このメソッドは、呼び出された`File`オブジェクトがディレクトリである場合に`true`を返し、ディレクトリでない場合には`false`を返す。

##### 例

“`java
import java.io.File;

public class IsDirectoryExample {
public static void main(String[] args) {
// ファイルとディレクトリのパスを指定してFileオブジェクトを作成
File file = new File(“/path/to/file_or_directory”);

// isDirectory()メソッドでディレクトリかどうかを判定
if (file.isDirectory()) {

元記事を表示

【JavaGold】Fileクラス

## 概要
Javaプログラムでファイルやディレクトリを操作するための基本的なクラスである。
ファイルとディレクトリにアクセスするためのメソッドを提供する。

#### 主なメソッド

**ファイル操作メソッド**

– `createNewFile()`:
新しいファイルを作成する。
– `delete()`:
ファイルまたは空のディレクトリを削除する。
– `renameTo(File dest)`:
ファイルの名前を変更する。

**ファイル情報取得メソッド**

– `exists()`:
ファイルが存在するかどうかを判定する。
– `getAbsolutePath()`:
ファイルの絶対パスを取得する。
– `getName()`:ファイルの名前を取得する。
– `length()`:ファイルのサイズ(バイト単位)を取得する。

**ディレクトリ操作メソッド**

– `mkdir()`:新しいディレクトリを作成する。
– `mkdirs()`:
親ディレクトリも含めて新しいディレクトリを作成する。

**ディレクトリ内のファイルとディレクトリの一覧を取得するメソッド**

元記事を表示

OTHERカテゴリの最新記事