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

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

ゲッターとセッター(Java)

# ゲッターとセッター

Javaオブジェクトのフィールドに値を設定(セット)するメソッドが**セッター**。
その値を取得(ゲット)する値が**ゲッター**。

## 基本
慣習として以下のような名前、引数、戻り値になっている。

| |メソッド名 | 引数 | 戻り値 |
|:-:|:-:|:-:|:-:|
|ゲッター|getXXX()|引数なし|フィールドの値|
|セッター|setXXX()|引数一つ|void型|

## ゲッター

### その前にまず、カプセル化について
プログラムを形成するオブジェクトについて、その中身を他のオブジェクトからなるべく見えなくすること。
他のクラスからそのフィールドにアクセス出来なくするために、フィールドを全てprivateにすることがカプセル化の原則。

“`java

private 型名 フィールド名();
“`

カプセル化でprivateにしたフィールドは他のクラスから直接アクセスできない。
アクセスする必要があるときのために間接的にアクセスできる手段を用意する。
具体的には、間接的にアクセスするための以下のようなメソッド

元記事を表示

【Android/Java】超シンプルなOptionMenuの作成(API非実装)

## はじめに
Android開発歴1週間の超ビギナーです。
アウトプットとして簡単なOptionMenuを作成してみました。
これを実装するだけでも、かなり時間かかったので同じビギナーの方の参考になれば幸いです。
※記載量を省略すべく、stringsファイルは使用しておりません。

## アプリの概要
画面右上に設置した保存ボタンを押すと、表示されているメッセージが変更するという超シンプルなアプリ
 

## 各ファイルのコード
### オプションメニューの表示レイアウト設定

元記事を表示

Javaで自作アノテーションを作成し値を取得する方法

Javaで自作アノテーションを作成し、アノテーションの値を取得するサンプルプログラムを紹介します。

# 環境

+ jdk1.8.0_231

“`
C:\>java -version
java version “1.8.0_231”
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

C:\>
“`

# 1. 自作アノテーションを作成

自作アノテーションのサンプルです。ここではメンバに「name」と「value」を持たせています。

“`java:MyAnnotation.java
package test01;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.l

元記事を表示

【Java】楽曲ファイルからタグ情報を取得する

## はじめに
楽曲ファイルのタグ情報(楽曲名、アルバム名、アーティスト名など)は各種メディアプレイヤーから簡単に編集が可能です。
特にiTunesでは `Gracenote` を使ってCDからのインポートと同時にタグ情報の自動取得まで行ってくれてとても便利です。
しかし、中には取得してきたタグ情報が __自分好みじゃない__ 場合もあるかと思います。
例をあげると

* 楽曲名がCD表記と異なる
* アーティスト名が表記揺れしている
* ジャンルが異なる(ここは個人の主観もあると思いますが…)

などなど…
これらを1曲ずつポチポチ編集するのは面倒なので、システムからタグ情報を操作できればいいなーと常々思ってました。(そのためには上記の要件を満たす[CDDB](https://ja.wikipedia.org/wiki/CDDB)も必要になりますが…)
今回は `システムからタグ情報を操作する` のうち `タグ情報を取得する` 処理に関して、 `Java言語` と `SpringBoot` の組み合わせで `JAudioTagger` というライブラリを検証した結果を備忘

元記事を表示

JavaでTODOアプリを制作しよう12 使われていないHttpMethodでリクエストが来た時の処理・サーバー内でエラーが起きた時の処理

こんにちは。

前回までに引き続き例外処理の実装を進めていきましょう!

## TODOアプリ作成リンク集
[1: [超基礎の理解] MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
[2: [雛形を用意する] Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)
[3: [MySQLとの接続・設定・データの表示] MySQLに仮のデータを保存 -> 全取得 -> topに表示する](https://qiita.com/nomad_kartman/items/f5f13037f048eeecf492)
[4: [POST機能] 投稿機能の実装] (https://qiita.com/nomad_kartman/items/113cdfc3c5cd1f5c0cef)
[5: [PATCH機能] TODOの表示を切り替える] (https://qiita.

元記事を表示

【Java】Thymeleaf基本 (SpringBoot)

#Thymeleafとは
* SpringBootで標準で使われるテンプレートエンジン
* テンプレートエンジンを使うことでWebアプリケーション(MPA)を作るのに必要な機能が追加される
* 例えばHTMLファイルの中に`[[]]`でJavaの変数名`[[${modelValue}]]`を書くことができる
* これで画面が表示される時に、HTMLファイルがテンプレートとなって、Placefolder(=置き換わる場所)をSpringフレームワークが書き換えてくれる
* テンプレートの機能を果たすものをThymeleafという
![timeleaf.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282755/351b4dfc-4199-38af-d3f6-3a532f0f194b.png)

##使用方法
* build.gradleファイルのdependenciesにThymeleafが定義がされていることを確認

“`Java
dependencies {
compile(‘org.spring

元記事を表示

Eclipse Pleiades All in One を使って Tomcat プロジェクトを作成する

## はじめに
* Eclipse Pleiades All in One を使って Tomcat プロジェクト(Java Servlet)を作成する方法についてまとめました。Eclipse Pleiades All in One は Eclipse の日本語化対応がされており、JDK や TOMCAT など Java Servlet を作成するために必要なソフトウェアがパッケージ化されているので環境構築がしやすい点がメリットです。

## 概要
* Java Servlet とは、Java で実装された WEB アプリケーションにおいて、動的 WEB ページを生成するプログラムです。WEB アプリケーションは、サーバ・クライアントシステムになっており、以下の図のように、クライアントがサーバにリクエストを送信し、サーバがクライアントにレスポンスを返して動作します。
【WIP】Java変数

記事を書いた目的:Javaの基本、変数について調べ知識を整理する。

#変数とは?

– データ値を格納するための入れ物です。(コンテナとも呼ばれます)
– Javaには、たとえば次のようなさまざまなタイプの変数があります。

– ***String***:”Hello “のようなテキストを格納する。文字列の値は二重引用符で囲まれている。
– ***int***:123 や -123 のような小数を含まない整数 (整数) を格納する。
– ***float***:19.99や-19.99のような小数を含む浮動小数点数を格納します。
– ***char***:は ‘a’ や ‘B’ のような単一の文字を格納します。文字値は単一引用符で囲まれています。
– ***boolean***:値を格納し、2つの状態: true または false を

元記事を表示

Migration Toolkit for Application Binariesを使ってみた

IBMから出ているMigration Toolkit for Application Binariesは無料のツールでJavaアプリケーションのバージョン間の移行やLibertyへのマイグレーションを診断してくれるツールです。診断を行うためにはJavaアプリケーションのwar/earファイルが必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59741/83b50e9a-40a6-e785-74d9-ba6c8b3172ed.png)

https://developer.ibm.com/wasdev/downloads/#asset/tools-Migration_Toolkit_for_Application_Binaries

手順は
– JDKのインストール
– このMigration Toolkitのダウンロード、インストール
– war/earファイルの準備
– 診断の実行
* 私はWindows 10の環境でやってみました。JavaがあればMac, Linuxでも

元記事を表示

Java GradleからのDocker利用

今回に限らず巨人の肩に乗ってパッケージを便利にしてきますか。
[前回](https://qiita.com/akotadakura/items/6256cfc51934db2ad8a8)のパッケージをさっくり作ったところからスタートします。
なお、繰り返しですが[ソースコード](https://github.com/akotadakura/gradle-docker)あります。
適宜ご覧ください(READMEの口調が荒いですがお許しくだされ)。

### 導入プラグイン
今回利用するのは、米Palantir Technologies(データ分析業)の開発している、
docker pluginたちです。
「たち」というのは、docker, docker-run, docker-composeそれぞれに独立のプラグインがあるからですね。
https://github.com/palantir/gradle-docker
composeは今回はいいかなぁ…
ひとまずはgradleからcontainer起動までこぎつける、ここまでを扱います。

### 各手順

#### 1. Docke

元記事を表示

Gradleジャーニー:快適なパッケージを求めて

ほぼ動的型付け言語しか使用しないチームに転職し、
┌( ^o^┌ )┐ <- これのごとく型付けェ型付けェと禁断症状に... 欲求不満に任せ、いつのまにか理想のGradleパッケージのジャーニーへと旅立っていました。 せっかくなので情報整理がてらやりたいこと・過程を紹介します。 あと、Githubにpublicのrepositoryを作っているので、 それをご覧いただくもよし、そのまま流用するもよし(そんな価値があればよいですが...)。 Github Link: [gradle-docker](https://github.com/akotadakura/gradle-docker) ※本記事はJava/Gradle/Dockerなど基礎知識はすでにある前提でお読みください。 ### やりたいこと 1. [Dockerにすんなり疎通できる](https://qiita.com/akotadakura/items/ceafd0aea8e419bd1197) 2. テストのフローはきっちり(Junit*Matcher - Jacocoでカバレッジ)(YET) 3. Logも今風(slf

元記事を表示

ラムダ、ソート、無名関数の例

import java.util.*;
import java.util.function.Predicate;
import java.util.Comparator;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

// ソートのテスト
// https://techacademy.jp/magazine/34841
class Test1 {
public static void ソートテスト() {

//小さい順
// List num1 = new ArrayList<>(Arrays.asList(100,35,72));

// Collections.sort(num1);

// for (Integer a : num1) {
// System.out.

元記事を表示

google-java-formatの適用

#はじめに
JavaCodeスタイルはたくさんありますが、
例えば:
Javaコーディング規約:https://future-architect.github.io/coding-standards/documents/forJava/Java%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E8%A6%8F%E7%B4%84.html

Google Java Style:https://google.github.io/styleguide/javaguide.html

Codeのフォーマッタがあると便利だと思われます。

#Google Java Styleに合わせたい
開発者はstyleの理解をしましたが、フォーマッタも自動化しないと漏れの可能性があります。
google-java-formatを適用すれば便利です。

##google-java-formatとは
>google-java-format is a program that reformats Java source code to comply wi

元記事を表示

Java + Apache Batik で SVG のパスデータ (path 要素の d 属性) を描画する

## 概要

– Apache Batik の Parser モジュールで SVG のパスデータ (path 要素の d 属性) フォーマットを解析して Shape オブジェクトを生成して描画処理をする

## Apache Batik の Parser モジュール

Apache Batik の Parser モジュールは SVG を解析できる。
ただ、ドキュメントには Parser モジュールは一般的な開発には使うことを想定していないと書かれている (そのわりにはドキュメントがそれなりにちゃんと書かれている)。

[Architecture overview](https://xmlgraphics.apache.org/batik/using/architecture.html)

> Finally, the Low level modules are used internally by the core modules to accomplish their work. These modules are not typically used by developers d

元記事を表示

【Java】Spring Boot 基本からHello Worldまで

#Springとは
Java開発におけるフレームワーク(=効率化tool)
ex:DBにアクセスするクラスなど

###Springの全体図
![spring.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282755/25851496-afb4-b1de-be10-3c718333c3dc.png)

##SpringBoot(≒スプリングフレームワーク)
* Springフレームワークがベース(もともとJavaのフレームワーク)
* 複数のライブラリの集合体。ビジネス系のApp作るために必要なものを網羅している
* Spring MVC
* Spring JDBC
* Spring Security
* Spring Data (JPA)
* 複数のフレームワークを使用する際に設定をXMLでゴリゴリ書かなくても簡単に設定できるのがSpring Boot

##Spring DI
* DI :Dependency Injection(依存性の注入)
* Spring

元記事を表示

CloudFirestoreの簡単な使い方(Android)

##はじめに
CloudFirestoreのAndroidでの基本的な使い方をメモ。
(導入から簡単なデータの送信受信など。)
使用言語はJava、開発環境はAndroidStudioを使用しています。
初投稿なので見にくい点が多々あると思いますがご了承を。
##Firestoreについて
FirestoreはNoSQLデータベースです。
ファイル構造は画像の通りです。
コレクション内にドキュメントが入っていてその中のデータを使います。
ドキュメント内にサブコレクションを作成することも可能です。
![structure-data.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/686889/4a5dbf95-be00-ebfc-36e7-4f1fb87593b2.png)

##プロジェクトの作成、準備
[Firebase](https://console.firebase.google.com/u/2/)のホームページからプロジェクトを作成をクリックし、プロジェクトの追加をクリック好きな名前を設定しアナ

元記事を表示

期間の重複チェック(LocalTime, LocalDate, LocalDateTime)

毎回ロジックを考えている気がするのでメモしておく。

– 期間の終了がnull (つまり開始からこの先ずっと対象期間) というパターンもよくあるので、それにも対応。
– 「10:00 ~ 11:00」と「11:00 ~ 12:00」のような、期間1の終了と期間2の開始がぴったり一致している時も重複あり判定にしている。このパターンを重複なし判定にする場合は、 `!start2.isAfter(end1)` を `start2.isBefore(end1)`に、 `!end2.isBefore(start1)` を `end2.isAfter(start1)` にする。

“`scala
/**
* 期間の重複チェック(LocalTime版)
* 単一のポイントで期間が重なったときも重複したとみなす。
* e.g.)
* 期間1 => 10:00 ~ 11:00
* 期間2 => 11:00 ~ 12:00
* 結果 => 重複あり(true)
*
* @param start1 期間1の開始
* @param end1

元記事を表示

Javaで、前後の連続する改行やタブを取り除く

追記
1文字だとマッチしないことに気づき
`”^[\t\n]*([^\t\n]+(.|\\s)*[^\t\n]+)[\t\n]*$”`から
`”^[\t\n]*([^\t\n]*(.|\\s)*[^\t\n]+)[\t\n]*$”`に修正した。
最初のプラスがアスタリスクになった。

————————————

大嫌いな正規表現。
前後以外の改行やタブはそのままにするとこがポイント。
めちゃくちゃハマったので記事にしときます。

“`java

public static String trimNewline(String str) {
String regex = “^[\t\n]*([^\t\n]*(.|\\s)*[^\t\n]+)[\t\n]*$”;
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if (m.find()) {
return m.gro

元記事を表示

【Java】joinメソッドの使い方

#プログラミング勉強日記
2020年10月23日
Javaで文字列を連結するときに便利なjoinメソッドを使ったので、まとめる。

#joinメソッドとは
 指定された区切り文字で、文字列を連結するためのメソッド。第一引数を区切り文字(デリミタ)として、第二引数を接頭辞として以降指定された接頭辞の終わりまでの文字列が区切られる。
 デリミタは`,`(カンマ)、`.`(ピリオド)、`:`(コロン)、を指定することができる。

“`java:例
public class Main {
public static void main(String[] args) throws Exception {
String str = String.join(“,”, “apple”, “orange”, “melon”);
System.out.println(str);
}
}
“`

“`:実行結果
apple,orange,melon
“`

元記事を表示

if文の中括弧の省略(Javaシルバー)

# if文の中括弧の省略
Javaの制御文(if、for、while等)の中括弧は省略しても実行される場合がある。
{}が省略されている場合は、true時の処理対象が1行のみである。

以下の例①のコードでは、条件式(i < 3)の結果がtrueの場合、実行される文は処理1の文のみである。 処理2の文は条件式に関わらず必ず実行される。 ```java:例① if(i < 3) System.out.println("処理1"); System.out.println("処理2"); ``` つまり、例①は以下の例②のコードと同じ動きになる。 ```java:例② if(i < 3){ System.out.println("処理1"); } System.out.println("処理2"); ``` 今回、Javaの資格試験にでる可能性があったためメモした。 しかし、文法的には問題ないが可読性と保守性は下がるため、基本的には省略せず、例②のようなブロック{}の形にする。 **※コメントで教えていただいたので追記する。ifやwhileなどは元々「直後」の文

元記事を表示

OTHERカテゴリの最新記事