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

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

JSONオブジェクトをBeanに変換する

APIを使用して取得してきたJSON形式のデータを型変換して、Beanに格納する処理についてです。
インタフェースを通して外部システムからデータを取得して、そのデータをBeanに格納するために、データをBeanの型に変換する必要があります。
![スクリーンショット 2023-02-18 8.55.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551832/89248b14-c7cf-2fd9-fe04-6344f38c24bd.png)

## 前提
外部システムから取ってきたデータは以下のJSON形式です。
“`json
{“catList”:[{“id”:”1″,name:”トラ吉”,”age”:”3″}]}
“`

クラスはAnimalBeanクラスと、その子クラスであるCatBeanクラス。AnimalBeanの中にCatBean型のListがあります。

#### AnimalBean.java
“`java

public class AnimalBean {

priv

元記事を表示

OpenAPI Generator(JAR版)でC#のサーバ、クライアントを自動生成する

# 1. はじめに
* スキーマ定義からOpenAPI Generatorを使用してC#のサーバー、クライアントのソースをジェネレートしたい
* Jar版を使用したいため、Javaのインストール、設定もしたい

# 2. Javaのインストール
## 2.1. ダウンロードサイトを開く
https://www.java.com/ja/download/ie_manual.jsp

## 2.2. ダウンロードボタンをクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852081/a3cdbe1a-a03c-cd7d-a88a-e83afdca2aee.png)

## 2.3 インストーラーをダウンロードして開く

## 2.4. インストールボタンをクリックする
* 任意で宛先フォルダの変更をしたい場合はチェックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285208

元記事を表示

バック:SpringBoot フロント:Next.js メール認証付きユーザー登録機能を実装

# 概要
バックエンド:SpringBoot RestApi
フロントエンド:Next.js TypeScript
でBtoC向けECショップのクローンサイトを作ってます。

今回はログイン機能を実装します。

下の記事の続きですね。
[SpringBoot Rest-Apiメール認証付きユーザー登録機能の実装](https://qiita.com/RYA234/items/ecf37fdc2e080b1127f8)
前回はPostmanを使って挙動を確認しましたが、今回はフロントエンド側でページを作成 API処理を実行してユーザー登録できるようにします。

# ユースケース
入力したメールアドレスが本当に所有者なのか確認するため、メールアドレス認証を行います。

1.ユーザーがEmailとPasswordを入力して登録ボタンを押す。
2.システムがデータベースにユーザーを”仮登録”の状態で登録して、認証するためにEmailを送信する。
3.ユーザーが認証メール中のリンクを押すと、登録完了される。

# 開発環境
OS:windows10

バックエンド側:
IDE:In

元記事を表示

Gradle – archive contains more than 65535 entries.

# Problem
“`
* What went wrong:
Execution failed for task ‘:JarHazardSyncWorker’.
> archive contains more than 65535 entries.

To build this archive, please enable the zip64 extension.
See: https://docs.gradle.org/7.6/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:zip64

* Try:
> Run with –info or –debug option to get more log output.
> Run with –scan to get full insights.



…skip
Caused by: org.gradle.api.tasks.bundling.internal.Zip64RequiredE

元記事を表示

フロントとサーバの通信方法(RPC) Javaオブジェクトを送受

前回は、テキストだけを送受信する方法を学びました。
今回は、Javaオブジェクトを送受信します。

今回のファイルの場所です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132663/1c7648b9-d21b-cc88-1136-8cf24e072e09.png)

■まず、通信のクラスを定義します。いくつかのルールがあります。

①引数のあるコンストラクタがある場合は、デフォルトコンストラクタが必要です。
②シリアライズ(通信するときの直列化という意味)する為、次のインターフェースをつけてねSerializable,IsSerializable
③継承するのはできるだけ避けましょう。できるだけPoJoが望ましい
④プリミティブ型(intなど)やJavaの基本的配列クラス(純粋な配列もクラス.ListやMapなど)は利用できます。
(*)サーバ側のファイルやioを操作するもの、ライブラリは使えないと考えましょう。
⑤自分のクラスを変数で利用する場合は、①~④のルールに

元記事を表示

Leetcode 530. Minimum Absolute Difference in BST

https://leetcode.com/problems/minimum-absolute-difference-in-bst/

## アプローチ
### DFS

“`java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {

public int result = Intege

元記事を表示

Leetcode 783. Minimum Distance Between BST Nodes

https://leetcode.com/problems/minimum-distance-between-bst-nodes/

## アプローチ
### DFS

“`java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int result = Integer

元記事を表示

module

exportsは公開。
opensは非公開、reflectionのみ可能
requiresでモジュール取り込み

以下のサンプルは、
ParentProject side、opensでreflection可能し、Factoryを公開、
ChildProject side、requiresし、invoke。

なお、other-projectはnetbeansでbuild-timeに出力されるjarをお互いにbuild-pathにいれてある。これによりモジュールとして参照ができるようになる

“`ParentProject/default-package.module-info.java
module ParentModule {
opens parentproject to ChildModule;
exports publicpackage;
}
“`
“`ParentProject/parentproject.ParentProject.java
public class ParentProject {
public static void main(

元記事を表示

JavaでWord文書にフォームフィールドを追加する方法

Word文書をフォームとして使用して多数の対象者から情報を収集することは、しばしば厄介なことがあり、収集者は要件に合わない、あるいは完全に間違っている情報を大量に入手してしまうことがあります。 しかし、文書にフォームフィールドを追加することで、要件に合わない情報を収集することを避けることができます。Word文書におけるフォームフィールドは、ユーザーが指定した種類のデータを入力するための対話型の文書要素で、入力された情報が正しいことを確認しながら情報収集を大幅に容易にすることができます。 この記事では、無料の[Free Spire.Doc for Java](https://jp.e-iceblue.com/introduce/free-spire-doc-for-java.html)を使用したプログラムを通じて、Word文書にフォームフィールドを作成する方法を説明します。
## 【依存関係の追加】
この方法は、無料のFree Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。
### 1. Maven
Maven を使用している場合、プロジ

元記事を表示

NumberFormat class

getCurrencyInstanceはlocaleにより表示内容が違う
getInstance,getIntegerInstanceはlocaleに影響を受けない
“`java
public class Outer {
public static void main(String args[]) {
Locale.setDefault(Locale.JAPAN);
method();
Locale.setDefault(Locale.US);
method();
}
static void method() {
System.out.println(“——————-“);
double num = 10000.99;
NumberFormat nf1 = NumberFormat.getInstance();
NumberFormat nf2 = NumberFormat.getInteger

元記事を表示

【Java基礎】if構文-4.複数の条件分岐

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksBasic.html)
整数値を入力させ、値が正であればpositive、負であればnegative、0であればzeroと表示するプログラムを作成しなさい。

# コード
“`Java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
if(t > 0){
System.out.println(“positive”);
}else if(t < 0){ System.out.println("negative"); }else if(t == 0){

元記事を表示

配列のclone()の挙動確認というか覚書

シャローコピーとディープコピー。え、ディープなコピーがあるってことはシャローなコピーの時ってどうなんだろう?あれ、シャローコピーって配列だけで要素空なんだっけ?

きっとしばらくすると忘れちゃうんだ。その度に、コードで検証するけどとっても労力がもったいない。ここを見て思い出せ自分。

配列のclone()の結論。
+ 配列はインスタンスの複製
+ 要素は値のコピー

“`java:サンプルコード
/**
* 配列に対するclone()の挙動確認
*
* 配列は複製。
* 要素は値コピー。
*/
public class Sample0216a
{
public static void main(String[] args)
{
//clone()した直後の中身が同じであるにも関わらずhash値が異なることから、配列のインスタンスは別物と言える。
//要素はコピーなのか、複製が代入されたものなのかはここからは判断できない。
System.out.println(“+++sample1+++”);
sample1();
System.out.print

元記事を表示

Spring Boot WEBサービスを ACI (Azure Container Instances) 環境で起動する

# Spring Boot WEBサービスを ACI (Azure Container Instances) 環境で起動する

## 目的

[Spring Boot WEBサービス](https://qiita.com/hiroxpepe/items/4a0f5e077155ce41e7ac)を [Azure Container Instances](https://learn.microsoft.com/ja-jp/azure/container-instances/container-instances-overview) 環境で起動して理解を深めます。

## 実現すること

Microsoft Azure Container Instances (ACI) に Spring Boot WEBアプリの Docker イメージをデプロイ・起動します。

## 開発環境

+ Windows 11 Home 22H2 を使用しています。
+ [WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu

元記事を表示

DateTimeFormatter class

“`java
public class Outer {
public static void main(String args[]) {
method();
Locale.setDefault(Locale.US);
method();
}
static void method() {
System.out.println(“—————-“);

LocalDateTime ld = LocalDateTime.now();
System.out.println(DateTimeFormatter.BASIC_ISO_DATE.format(ld));
System.out.println(DateTimeFormatter.ISO_DATE.format(ld));
System.out.println(DateTimeFormatter.ISO_TIME.format(ld));

元記事を表示

Gradle – How to Generate an Runnable JAR File

“`build.gradle

apply plugin: ‘java’

compileJava {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
options.encoding = ‘UTF-8’
}

repositories {
mavenCentral()
}

dependencies {


…skip
}

configurations {
implementation {
canBeResolved = true
}
}

task JarTestExample(type: Jar) {
zip64 = true
duplicatesStrategy = DuplicatesStrategy.INCLUDE
archivesBaseName = ‘TestExample’
includeEmptyDirs = fals

元記事を表示

Javaのラムダ式を順番に理解するための基礎知識

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/650867/612e6b7d-c97b-6cbc-a664-97cfaf5c67d8.png)

# 初めに

こちらは Java 二年目の自分が実務であまり使用したことのないラムダを理解するためにまとめた記事です。対象の読者は以下の様な方を想定しています。

– Java 二年目付近の人
– ラムダが何をしているのかわからない人
– ラムダを用いることのメリットがわからない人

※本記事では Stream / Optional は扱いません。

ラムダは関数型言語の考え方であること。それを取り入れて匿名クラスの記述を簡略化したもの。そもそも匿名クラスの目的はなんなのか。などを順番に書いていきます。

  • 初めに
  • properties class

    “`java
    public class Outer {
    public static void main(String args[]) {
    try {
    FileReader fr = new FileReader(“C:\\dirtest\\sample.properties”);
    Properties pr = new Properties();
    pr.load(fr);
    pr.forEach((x,y) -> System.out.println(x + “:” + y));
    Set s = pr.keySet();
    s.forEach(x -> System.out.println(x + “:” + pr.get(x)));
    pr.list(System.out);
    System.out.println(pr.getProperty(“name”));

元記事を表示

native2ascii

“`cmd
C:\Program Files\Java\jdk1.8.0_351\bin>native2ascii.exe C:\dirtest\sample.properties C:\dirtest\sample.properties.0
“`
“`sample.properties
name=sato
price=100
address:大阪
age:19
“`
“`sample.properties.0
name=sato
price=100
address:\u879f\uff67\u9ae6\uff6a
age:19
“`

元記事を表示

JavaでDB接続時ORマッパーを使用してみた

# はじめに
未経験からエンジニアになって、結構苦戦した場所なので記録しておきます。
公式のやり方で結局正解だったのだけど、未経験からしたら訳わからんのですよ。

なので、自分なりの解釈と同じ初心者にわかりやすいように書いていきます。

色々例えて書くため明確には違う表現もあるかと思いますが、とりあえず何となく理解して動くものを作成していきますのでお願いします。

一応参考までに、[iciql](http://iciql.com/)こちらが公式サイトです。
# 開発環境
Windows 10 Pro
eclipse
MySQL 8.0.31
# ORマッパーとは
ORM(オブジェクト リレーショナル マッピング)のこと

意味として、RDB(リレーショナルデータベース)をオブジェクト指向型のやり方で扱えるようにするための手法のことです。

具体的には、RDB(リレーショナルデータベース)に対する操作がひとまとめになったライブラリを使用し、これを使うことによってSQLの生成を背後で行ってくれるみたいです。

要は、これを導入することで自分のデータベースをクラスとして扱ってその処理を裏側で

元記事を表示

C言語系(JAVA C# Ts Go) 日本語系(Mind DNCL)各言語構文を比較して自作言語Re:Mindの構文を定める(変数宣言・実行文・関数宣言)

# はじめに
JAVA C# Ts GoといったC言語を由来とする新旧の言語とMind DNCLなどの日本語プログラミング言語の制御構文を比較して自作言語Re:Mindの構文を定めます。今回は変数宣言・実行文・関数宣言。

自作言語Re:Mindの詳しい利用シーンのイメージは[こちらへ](https://qiita.com/mylifewithviolin/items/9d58db8a101807c19bde)。すみません、企画段階です。日本語プログラミング言語です。

## この記事内容の作業目的
今回は各言語の変数宣言・実行文・関数宣言の構文を比較検討します。

## この記事内容の保証
※この記事には実装的な情報が含まれます。各言語で書かれた引用ソースの妥当性は保証されません。また、自作言語は開発中(というよりまだ企画段階)のため、本記事に開示された仕様は予告なく変更される場合があります。

# JAVA C# Ts Goの新旧C言語系の構文イメージ

なるべく長くならずイメージが比較しやすいよう、変数の型は整数、文字列、真偽の3つとします。関数は値を返すものと返さないもの2つと

元記事を表示

OTHERカテゴリの最新記事