JAVA関連のことを調べてみた2020年09月14日

JAVA関連のことを調べてみた2020年09月14日

Cloud Toolkit Mavenプラグインを使用してEDASにアプリケーションをデプロイ

この記事では、Cloud Toolkit Mavenプラグインを使用して**Alibaba Cloud EDAS**にアプリケーションをデプロイする方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploying-applications-to-edas-with-cloud-toolkit-maven-plug-in_594983)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

EDAS開発者の場合、アプリケーションのデプロイにWARまたはJARパッケージを使用している場合は、Cloud Toolkit Mavenプラグインを使用して、アプリケーションをAlibaba Cloud EDASにデプロイすることができます。

#ステップ1: Maven依存関係を追加
プロジェクトの pom.xml ファイルに、以下の``依存関係を追加します。

“`

元記事を表示

Webアプリのメニューの表示条件の設計・コード例

業務でのシステムの話。
ログイン後、メニューが会社や人によって変わる条件を調査をしたときに、「クラス使った方が良くない?」と思ったことがあったので、考えをメモしておきます。

# 現状のコード

以下のような会社クラス、ユーザクラスが存在し、それらの情報を使うビューが実装されています。
ここでは、getter、setterは `@Data` により自動的に実装されるものとします。
また、マジックナンバーは本来使うべきではありませんが、定数化を割愛しています。

## 会社クラス

“`java:Company.java

/**
* 会社の情報を格納するクラス
*/
@Data
public class Company {
private String companyId; // 会社ID
private int option1Flg; // オプション1のフラグ(0 or 1)
private int option2Flg; // オプション2のフラグ(0 or 1)
}
“`

## ユーザクラス

“`java:User.java
/**

元記事を表示

My Study Note (Java)

#Ref. site
– https://www.sejuku.net/blog/22337

#メソッド参照
-https://www.sejuku.net/blog/22337
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602725/f4629713-49a8-421b-50c3-bec4e2490667.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602725/1ab7a322-8e5a-0634-8105-fa1625b19a2c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602725/093f780d-6cd2-e662-9ad9-477bb22f56ab.png)

![image.png](https://qiita-image-store.s

元記事を表示

Micronaut 2.x 入門 ~AWS Lambdaにネイティブビルドしてデプロイ~

前回: [Micronaut 2.x 入門](https://qiita.com/akkiyyy0114/items/27d74671763bedf76ffe)に続いて今回はネイティブビルドしたMicronautアプリをAWS Lambdaにアップロードしていきます。

versionが2.0以降初期で作成されるファンクションアプリが大きく変わったので少し混乱しましたが、公式のブログに細かく作り方が記載されていたので、それを元に作成していきます。

## 環境

* macOS Catalina: 10.15.4
* メモリ: 16GB
* Micronaut: 2.0.1
* Java: 11.0.8.j9-adpt
* Docker for Mac: 2.3.0.4
* AWSアカウント

## MicronautでLambda Function用アプリケーション作成

作業用ディレクトリを作成

“`bash
$ mkdir 02-native-function && cd 02-native-function
“`

Micronaut CLIを利用して作成し

元記事を表示

Java HashMap,entrySet 【個人メモ】

#【Java HashMap,entrySet】

業務でよく使用する、HashMap,entrySetの備忘録です。

##HashMap<key, value>

HashMapはジェネリクス型(総称型)なため、keyとvalueの型を決めて宣言する。
総称型は、利用する型を限定するもの。

Mapのkeyとvalueのペアは、Map.Entry インターフェイスで表す。

##entrySetメソッドは、Mapのクラスメソッド

連想配列キーとバリューの組み合わせをエントリーといい、Mapのコレクションを返す。
Mapの配列ループのようなもので、動作が速い。

Map.Entryは、getKeyメソッドで、key。getValueメソッドで、valueの値を取得する。

.entrySet( ); を使うことで全要素を取得することが可能

###・実際に使用している例

####①HashMap<String, Object> 1対1で対応
 Objectには、様々な要素が入る。

####②ArrayList<String> 文字列の値の羅列を格納

####①+②= Arr

元記事を表示

Java 部分文字列

#【Java 部分文字列】

業務でよく使用する Javaの部分文字列のメモです。

##部分文字列 substring

substringメソッドの第一引数に抜き出し開始の位置(beginIndex)、第二引数に抜き出し終了の位置(endIndex)を指定する。

部分文字列は、beginIndexから始まり、endIndex-1 までを表す。

##・substringの例

“`java
“サンプル文字”.substring(beginindex, endindex-1);
“`

beginindexは、0番目から数え始める。
配列の添え字の数え方と同じ。

##・文字の長さは、endIndex – beginIndex

“`java
“サンプル文字”.substring(0, 4);

//出力結果:サンプル
“`
この場合だと、文字の長さ 4-0=4
なので、4文字が部分文字列として表示される。

元記事を表示

Javaでデータオブジェクトの内容をJSONに変換したい でも循環参照が…

# この記事で「データオブジェクト」とは何?
データを格納するために定義したJavaのクラスの事を指します。「privateメンバ変数 + getter&setter」か、publicメンバ変数を持つだけのクラスです。
web APIや、JPAでデータベースからデータを取ってくる時なんかによく作りますね。「DTO」って呼ぶ場合もあります。

# 環境
– JDK : Amazon Corretto 1.8.0.265
– Apache commons-lang3 : 3.11

# やりたいこと
こういうデータオブジェクトがあったとして、ここに格納されたデータをログとかに出力したい時ってありますよね。

“`java
public class TestDto
{
public String stringvar;
public Integer integervar;
public int intvar;
public TestDto2 testDto2;
public BigDecimal decimal;
public java.util.Date dat

元記事を表示

【Kotlin】Javaを前提としたリフレクションによるマッピングライブラリは基本的にKotlinで動かない

`ModelMapper`など、「`Java`向けのリフレクションを利用したマッピングライブラリが`Kotlin`の`data class`に対して機能しない」という話をしばしば見かけるので、何故そうなるのかと、それに対応するためにどのような手段が有るかを書きます。

# TL;DR
– `Java`向けのマッピングライブラリは「引数無しコンストラクタでインスタンス生成 -> 個々のフィールドを初期化」という手順を前提としている
– 一方、`Kotlin`の`data class`は基本的に引数無しコンストラクタを持たない
– このため、`Java`向けのリフレクションを利用したマッピングライブラリは`Kotlin`の`data class`に対して機能しない

## 補足
この記事では、マッピングライブラリという言葉を以下のような意味で使います。

– マッピングライブラリ: 何らかのソースからフィールドを初期化したオブジェクトインスタンスを生成するような機能を提供するライブラリ
– e.g. `ModelMapper`, `BeanPropertyRowMapper`

また、

元記事を表示

JavaのgetClass()はジェネリクス(or型変数)との相性が悪い

少し直観に反するJavaの言語仕様に気が付いたのでメモしておきます。
検証環境は Windows 版 OpenJDK 11 (build 28) です。

# 出来ないこと

“`java
public static void hoge(@NonNull T value){
Class type = value.getClass(); // コンパイルできない
// type を使って作業したい
}
“`

value は`T`かそのサブクラスのはずなので一見,問題なさそうな気がしますが,このコードはコンパイル出来ません.

“`text:javac
GenericGetClass.java:3: エラー: 不適合な型: ClassをClassに変換できません:
Class type = value.getClass();
^
Tが型変数の場合:

元記事を表示

Zipファイルを読み込み直接文字列に変換する

# 概要
Zipファイルを読み込み直接文字列に変換します。

# 解説
読み込みにはInputStreamクラスのreadAllBytesメソッドを使用しています。
すべてのバイトを一気に読み込んでくれるのでとても便利ですね~。

ただしリファレンスによると、「このメソッドが、すべてのバイトを1つのバイト配列に読み取ると都合が良い簡単なケースで使用するものであることに注意してください。 大量のデータを持つ入力ストリームを読み込むためのものではありません。」という記載がありました。

# コード
“`java:Unzip.java

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.util.zip.ZipInputStream;

public class Unzip{
public static void main(String[] args) throws Exception {

String filePath = “ここでZipファイルのパスを指定”;

元記事を表示

正規表現で住所を番地前後で分割する

# 概要
javaで正規表現を使って、住所を番地前後で分割しようと思います。

コンソールから住所を入力することで分割された住所が表示されます。
※あくまで簡略的なものであり、全ての住所を完璧に分割できるものではないのでご了承ください。
# 手順
手順は以下の通りです
1.Patternクラス(java.util.regex.Pattern)で正規表現をコンパイル
2.Matcherクラス(java.util.regex.Matcher)のfindメソッドで入力された文字列が正規表現にマッチするか確認する。
3.マッチした場合文字を分割し、表示する。

正規表現の詳細はこちらのサイトを参考にいたしました。

【Javaで正規表現】文字列をチェックするパターンの書き方とサンプル

# コード
“`java:SplitAddress.java

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public

元記事を表示

Effective Java privateのコンストラクタでインスタンス化不可能を強制する

Effective Javaの独自解釈です。
第3版の項目4について、自分なりにコード書いたりして解釈してみました。
# 結論
staticメンバしか持たないクラスには、実行時例外を出すprivateコンストラクタを用意しよう。
# 説明
例えば共通の処理だけを集めたユーティリティクラス(以下、Utilクラス)はstaticメソッド、static変数のみを持ち、インスタンス化を前提としていない。

一般にpublicなUtilクラスは、コンストラクタを定義しないとpublicなデフォルトコンストラクタが用意されるため、外部のクラスで無駄にインスタンス化されてしまう懸念が生じる。

明示的にprivateコンストラクタを定義することで、Utilクラス外でのコンストラクタ呼び出しを防ぐことができる。
また、コンストラクタに例外出力処理を入れることで、Utilクラス内でのコンストラクタ呼び出しをエラーとすることができる。

※Utilクラスそもそもいらない論はここでは無視。
# コンストラクタ定義なしコード(ダメな例)
**Utilクラス**

“`java
public class S

元記事を表示

【Java】LocalDateTimeクラスで日付を取得する

#まずはimportが必要

“`java
import java.time.LocalDateTime;
“`
でパッケージの利用を宣言する必要があります。
**Eclipse**を使用している場合は宣言する前にLocalDateTimeのインスタンス化をすれば自動的にimport文が挿入されるようです。超便利ですね。

#現在の日付を取得してみよう

“`java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; // 形式を指定する場合はこのパッケージ宣言が必要

public class Sample_01 {

public static void main(String[] args) {
LocalDateTime d = LocalDateTime.now(); // 現在時刻のインスタンスを取得
// LocalDateTime d = LocalDateTime.of(2016, 1, 1, 10. 10, 10); // 特定の日付のインスタンスを取

元記事を表示

Javaの診断ツール Arthas(アーサス)を使ってみた

# Arthas(アーサス)

Alibaba ArthasはJavaアプリケーションの監視、プロファイリングなどができるツールです。監視対象のアプリケーションの設定変更や再起動なしに利用できるのが特徴です。
Arthasではできることがたくさんあって、これまで一部の機能だけ使っていたのですが、改めて調べてみると様々なことができることが分かったので紹介がてらに触ってみたいと思います。

– [Arthas](https://github.com/alibaba/arthas)

# インストールと実行

Arthasのインストールと実行は以下のコマンドを実行するだけです(Linuxの場合)。
Arthas自体はjavaアプリケーションですので、他の環境でも動かすことができます。

“`
$ curl -O https://arthas.aliyun.com/arthas-boot.jar
$ java -jar arthas-boot.jar
[INFO] arthas-boot version: 3.4.0
[INFO] Found existing java process,

元記事を表示

美大生のためのプログラミング入門:変数

※ Qiita では、本文部分のみの印刷に苦労します。そのため、同じ内容を以下のページにも掲載しています。プリンツアウトしたり PDF 化したい人は、こちらのページを利用して下しさい:

http://gurakura.sakura.ne.jp/hellomondrian/variable/

一覧はこちら:
http://gurakura.sakura.ne.jp/series/美大生のためのプログラミング入門/

Qiita 版の総合目次:
https://qiita.com/iigura/items/37180d127da93d0b8abb

![Vertical Composition with Blue and White](https://uploads3.wikiart.org/images/piet-mondrian/vertical-composition-with-blue-and-white-1936.jpg!Large.jpg)
Vertical Composition with Blue and White by Piet Mondrian, 193

元記事を表示

[ev3×Java] インテリジェントブロックボタン

この記事はJavaでev3を操作してみたい人のための記事です。
今回はインテリジェントブロックボタンを使っていろいろな操作をしていきたいと思います。

#目次
0 . 用意するもの
1 . Buttonクラスを使ったプログラム
2 . Keyインターフェースを使ったプログラム

#0.用意するもの
◯ ev3(タンク)
◯ パソコン(VSCode)
◯ bluetooth
◯ microSD
◯ [API Documentation](http://www.lejos.org/ev3/docs/overview-summary.html)(これをみながら進めていくのがオススメです。)

#1.Buttonクラスを使ったプログラム

####1-0 . 特定のボタンを押したら~するプログラム

◯上のボタンを押したら音がなり、右のボタンを押したらループを終了するプログラムです。

“`button00.java
import lejos.hardware.Button;
import lejos.hardware.Sound;

public class B

元記事を表示

【Java】 特定の数値を除いた乱数を取得する方法

## 9/13 更新
以前書いたコードを改善しました。改善点としては
– ListではなくSetを使用し、リトライ回数を減らしたこと
– 除外したい数値をString型ではなくInterger型にしたこと

“`java:main.java
import java.util.Random;
import java.util.HashSet;

public class Main {

public static void main(String[] args) {
Random rand = new Random();
int i;
// 除外したい数値を格納する
Set exSet = new HashSet();
exList.add(2);
exList.add(5);
exList.add(8);

do {
i = Interger.valueOf(rand.nextInt(10)+1); // 1~10までの乱数を生成し文字列に変換
} whil

元記事を表示

続:OOPのたとえ話が(略

# 熱いぜ
以前に[こんな記事](https://qiita.com/pff01632/items/bf4b58c92d6047ac2e67)を書いたのだが、久しぶりにOOPネタでトレンドが
~~炎上して~~ 熱く燃えているではないか。そこで、あれからまた少し考え
を整理した結果として、自分の考える抽象クラスとインタフェースは
こんな感じ!という考え方を表明してみたい。あくまでも自分の考えは
こうだ、という表明である。思考はJava的で。
※コードはビルドしてないし概念提示用のためかなり適当です。
# インタフェースとは
JavaのRunnableインタフェースがわかりやすいが、実装したい機能を表す
ハンドル(車のハンドルやバスケットの取手やドアノブのイメージ)だと
考えている。Runnableインタフェースで言うならば

– スレッドとして実装したいメソッドを表現するインタフェース
– スレッドの実装は要求ごとに異なるので好きに実装すればよい

という非常に便利な機能を提供してくれている。実装されているクラスが
何者かは知らなくても、インタフェースの機能は保証されると考えられる
ので

元記事を表示

【Java】配列とArrayListの違いについて

###初心者には同じにしか見えない…
**「Arrayってそもそも配列ですよね?ArrayListもArrayってあるから配列だよね!?」**

これは僕だけではないと思います。

使用していく中で経験的にわかっていくとは思いますが、ちゃんと理解していないと困ることもあるかと。

自分なりの理解をメモしておきますので、初心者の方に対して少し違いがイメージできるようになる助けになればと思います。

###そもそもクラスって?

* クラス
* データ(変数)
* 処理(メソッド・関数)

要は**データと処理を一まとまりにして扱うよ**というもの。

これが最初はわからなかったし、今でもそんなに便利なものなのかどうかもよくわかっていませんが。。。

よく車とかで説明されたりしますが、結局**「言ってることはわかるけど。。。」**という消化不良状態でした。

しかし、結局は**テンプレ**だと考えればすっきりしました。

###クラスはテンプレ、インスタンス化はテンプレの利用

初心者にはクラスとかインスタンス化しないと使えないとか言われてもなんのこっちゃという感じ

元記事を表示

JNIのライブラリ導入時にハマった事象

# はじめに
現在参画している案件でJNIの外部ライブラリを導入する際にClassLoader問題にハマったため、備忘録として解決方法を残したいと思います。

# 環境
Java8
wildfly-8.1.0.Final

# JNIとは
Java Native Interface (JNI) は、Javaプラットフォームにおいて、Javaで記述されたプログラムと、他のプログラミング言語(たとえばCやC++など)で書かれた、実際のCPU上で動作するコード(ネイティブコード)とを連携するためのインタフェース仕様である。
(Wikipedia:https://ja.wikipedia.org/wiki/Java_Native_Interface より引用)

# 導入ライブラリについて
メイン処理がC++で実装された外部ライブラリで、JNIを利用してJavaに組み込もうとしていました。

# ハマった点
ビルド資材を作成した際に以下のような構成にしていました。

“`terminal
service.ear
 ├ lib
 │ └ jni.jar ← ここにJNIのjarを配置
 ├ M

元記事を表示

OTHERカテゴリの最新記事