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

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

【Android/Java】外部アプリ起動(Android11)

## やりたいこと
外部アプリを起動したい。
Android11から[package-visibility](https://developer.android.com/training/package-visibility/declaring?hl=ja)が導入され、外部アプリを起動するためのお作法が変更となった
とりあえず、起動させるためのお作法を記載

#### AndroidManifest.xml
~~~xml









元記事を表示

【JavaGold】Serializableインタフェース

## シリアライズとデシリアライズ

#### シリアライズ
メモリ上にあるインスタンスをストリームとして出力すること。
これにより、オブジェクトをファイルに保存したり、ネットワーク経由で送信したりすることができる。

##### 特徴

– データの永続化:オブジェクトをファイルに保存することで、後で再び読み込むことができる。
– ネットワーク通信:オブジェクトをバイトストリームに変換して送信することで、別のプログラムや別のマシンとデータをやり取りできる。

#### デシリアライズ
ファイルに書き出された情報を元にインスタンスを作り直すこと。
これにより、ファイルから保存したオブジェクトを読み込んだり、ネットワーク経由で受信したデータを元のオブジェクトに戻したりすることが可能となる。

シリアライズ、デシリアライズを行う場合、`Serializable`インタフェースを実装したクラスを使用する。

## Serializableインタフェース
オブジェクトのシリアライズ(直列化[^1])を行うインタフェースである。
[^1]:複数のインスタンスを1つにまとめること。

“`jav

元記事を表示

JavaでPostgreSQLのエラーコードを取得する

PostgreSQLには、エラーの種類に応じてエラーコードがある。
詳細は[公式ページ](https://www.postgresql.jp/docs/9.0/errcodes-appendix.html)を参照。
数えてみたら199種類あった。
とはいってもお目にかかるのはほぼ「23 クラス — 整合性制約違反」だとは思う。

このエラーコードをMyBatisでクエリ実行したときに取得したい。
※試してはいないが、別にMyBatisでなくてSpring JDBCやJPAなど他のデータベースマッパー、ORマッパーであっても同じようにできるはず。

catch節をこのようにする。

“`java
}catch(Exception e){
String errorCode = ((SQLException)e.getCause()).getSQLState();
System.out.println(errorCode);
}
“`

MyBatisでの一例

“`java
Articles articles = new Articles(){{
setArt

元記事を表示

非SpringBootプロジェクトでRestTemplateを使ってWebAPIを呼ぶ

SpringBootをのせないMavenプロジェクトにおいて、ResTemplateを使ってWebAPIを呼びたい。

### pomに下記を追加。

“`xml

org.springframework
spring-web
5.3.13


com.fasterxml.jackson.core
jackson-databind
2.15.2

“`

※jackson-databindがないと、実行時、
org.springframework.web.client.RestClientException: No Ht

元記事を表示

SpringBatch

Spring-Batchについて自分なりに学習したことをまとめます。(自分用)
今回はcsvファイルを一括でDBへ保存するといった内容です。
前提条件は以下の通りです。

Java8
SpringBoot2.7
MySQL5.7

## プロジェクトの作成

https://start.spring.io/

・Lombok
・SpringWeb
・SpringBatch
・MySQL Driver
・Spring Data JPA
上記を追加してプロジェクの作成。
ディレクトリは以下の通りです。

## ディレクトリ

~~~java
├── main/
├── java/
├── com/javabatch/spring/
│ ├── batch/
│ ├── config/
│ │ ├── CustomerProcessor.java
│ │ ├── SpringBatchConfig.java
│ ├── con

元記事を表示

【Java?】プリミティブ型

Java Silver?の試験対策として、Javaのプリミティブ型についてまとめました。
– ?間違いやすい! 見直しポイント
– ⭐ずばり出題される
– ?‍?着眼点・理由

# リテラル
ソースコードに直接記載される値のこと

## 整数リテラル
ソースコードに直接記載される数値を表す数字

### 2・8・16進法表記
||2進法|8進法|10進法|16進法|
|:—:|:—:|:—:|:—:|:—:|
|先頭の文字|`0b`|`0`|(なし)|`0x`|
|例|`0b1010`|`0777`|`42`|`0xCAFE`|
– ?先頭に`0`をつけると8進法になる
– `0999`などはコンパイルエラー
– うっかり先頭を`0`でパディングしないように注意!

### 区切り文字”`_`”
– 整数リテラルは`_`で区切ることができる
“` java
// 使用例)Byteごとに区切って分かりやすくする
int mask = 0x00_00_FF_FF;
int hogeFlagBit = 0b00000000_00000000_00001000_000

元記事を表示

[リサーチ・メモ] Mavenとは

## 背景
仕事でeclipseを使用して、「Maven install」や「Maven clean」を実行したが、正直Mavenが何者なのか理解せず、何となく使用していた為整理する。

## Mavenとは
Javaのプロジェクト管理ツール
Project Object Model (POM) という考え方に基づき、プロジェクトのビルド、テスト、ドキュメンテーション、成果物の配備など、プロジェクトのライフサイクル(計画、設計、実装、テスト、デプロイ、メンテナンス)全体を管理するもの。

## POMとは
XML形式のファイル(通常pom.xmlという名前)に記述され、プロジェクトのビルド設定や依存関係、プラグイン、プロジェクト情報(例:プロジェクト名、バージョン、作者等)など、プロジェクトに関するすべての情報を定義する。
MavenはPOMを読み込み、定義に従ってプロジェクトをビルドすることにより、開発者は複雑なビルドプロセス(ソースコードから実行可能なソフトウェアアプリケーションまたはシステムを作り出す一連の手続き)を簡単に管理し、また他の開発者がプロジェクトを理解しやすくすること

元記事を表示

【Java?】Collectorのつかいかた(Java SE 8 -)

`java.util.stream.Collector`を使うと、配列のすべての要素どうしを計算する処理(数列の総和計算など)を効率化できるようだ。

# 総和計算を効率化したい
Q. 数が$+$で連結されている式$1+2+ \cdots +10$を効率よく(計算ステップ数が少なくなるように)3人で分担して計算するにはどのようにすればいいですか?
A. 以下の表のように『並列処理による効率化』をして計算すると4ステップで計算できる。

|計算者\ステップ数|1|2|3|4|
|:—:|:—:|:—:|:—:|:—:|
|A|$a_1=1+2$|$a_2=a_1+3$|$a_3=a_2+b_2$|$\sigma=a_3+c_3$|
|B|$b_1=4+5$|$b_2=b_1+6$|-|-|
|C|$c_1=7+8$|$c_2=c_1+9$|$c_3=c_2+10$|-|

この効率化は、与えられた式
$\sigma = 1+2+3+4+5+6+7+8+9+10$

$\sigma = (((1+2)+3)+((4+5)+6))+(((7+8)+9)+10)$
のよう

元記事を表示

ABC311A~Eの解答[Java]

## はじめに
今回はコンテスト中にEまで解けたのでそれを載せようと思います。

僕のライブラリは[提出結果](https://atcoder.jp/contests/abc311/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認ください。
では、見ていきましょう。

## A – First ABC
問題文は[こちら](https://atcoder.jp/contests/abc311/tasks/abc311_a)

一文字ずつ受け取って、HashSetのsizeが3になったところを出力しました。
“`A.java
final class Main {

private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner( System.in );
private static final SimplePrinter

元記事を表示

『もういい加減「nullチェックをしたら安全」とかわけのわからないことを言うのはやめよう』をうろ覚えで書いた記事

## 前書き

昔のQiitaに「Nullチェックはいらない。むしろNullPointerExceptionは前向きに発生させるべきだ。」みたいな簡潔な内容の記事(※)があって感銘を受けたのですが、それが今現在全く見つからない(多分消えた)のでうろ覚えで書き起こしてみます。


・2019年くらい?に見た記憶。記事自体はそれ以前に書かれたかもしれない。
・ブラウザの1画面で完結するような短い内容。

(追記)
見つけた。いい記事なので読みましょう。消えたのが残念。

https://web.archive.org/web/20170605024132/https://qiita.com/hecateball/items/e0a8f8902ee7f5adda39

https://b.hatena.ne.jp/entry/s/qiita.com/hecateball/items/e0a8f8902ee7f5adda39

## 本文

最近の言語はNull安全が取り込まれているのに対し、JavaはいちいちNullチェックをしないといけないから面倒と言われている。

“`java
pu

元記事を表示

[Java] 文字列検索

# 文字列検索とは
* 文字列の内部から、別の文字列(または文字)を探す
* 1.含まれるか否かだけを判定するもの
* 2.「文字列のどこに含まれているか」という位置情報を返すもの
# 基本的な文字列操作(検索)
## contains()
* 一部に文字列sを含むか調べる
“` java:contains()
public boolean contains(String s)
“`
## startsWith()
* 文字列sで始まるかを調べる
“` java:startsWith()
public boolean startsWith(String s)
“`
## endsWith()
* 文字列sで終わるかを調べる
“` java:endsWith()
public boolean endsWith(String s)
“`
## indexOf()
* 文字列strが最初に登場する位置を調べる
“` java:indexOf()
public int indexOf(String str)
“`
## lastIndexOf()
* 文字列strを後ろから検

元記事を表示

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

# まとめ
何か

元記事を表示

OTHERカテゴリの最新記事