JAVA関連のことを調べてみた2019年11月08日

JAVA関連のことを調べてみた2019年11月08日

Visual Studio CodeのJavaで–enable-previewオプションを付ける

随分前ですが、Visual Studio Code(以降VSCode)の[Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)がJDK 13に対応しました。

元記事を表示

Javaでgzファイルを解凍するサンプル

サーバ上のgzの中身を確認する必要があるにも関わらず、手元のへっぽこWindows7 PCには7zipのようなgzに対応したソフトウェアがインストールされていない。サーバ上で解凍すると、元ファイルが巨大すぎて、手元のPCに持ってこれない恐れがある。手元で使えそうなものはJavaとEclipseだけ–ということで、Javaでgzファイルを解凍するという機会がありましたので、そのサンプルコードをQiitaに供養しておきたいと思います。

“`java
import java.io.IOException;
import java.io.OutputStream;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.zip.GZIPInputStream;

public class GZIPUtils {
public static void unzip(Path src, Path dst) {

元記事を表示

コンストラクタ-java

**コンストラクタ**とは、newを使ってインスタンスを生成した後に**自動で呼び出される特別なメソッド**です。
コンストラクタは特別なメソッドのため、定義方法が決まっています。
**①コンストラクタ名はクラス名と同じにする**
**②戻り値を書いてはいけない(voidも書かない)**
という2つの決まりを守りましょう。
この2つさえ守れば、コンストラクタの完成です。

“`java:Sample
class Sample{
Sample(){
//インスタンス生成時に行いたい処理内容
}
}
“`

元記事を表示

Jarファイルの中身を差し替える

忘れないように覚書。
プロジェクトで必要になったので。

“`
jar -uf <差し替えるファイル・ディレクトリ名>
“`

簡単でした

元記事を表示

FlutterからJava/Objective-Cのネイティブコードを呼んでみた

# FlutterからネイティブAPIを呼びたい
[MethodChannel](https://api.flutter.dev/flutter/services/MethodChannel-class.html)を使って、FlutterからJava(Android)とObjective-C(iOS)のネイティブコード呼び出しを試してみました。

[Writing custom platform-specific code](https://flutter.dev/docs/development/platform-integration/platform-channels)に記載のサンプルコードを動かしてみたので、実際の流れをメモしておきます。

Kotlin/Swift版はこちら
[FlutterからKotlin/Swiftのネイティブコードを呼んでみた – Qiita](https://qiita.com/unsoluble_sugar/items/ae42b5faf52a491f6470)

サンプルソースはこちら
https://github.com/unsolublesu

元記事を表示

Javaでコードを書くときに意識していること

# 前置き
普段はJavaを書いているので、Javaを想定して書きます。
DDDっぽい趣向が入ってしまうのをなんとか避けつつ…(願望)

## 略称を使わず、総称を使う
例に関して、`id` ですら `identifier` と書いてしまう筆者なので少し過剰気味かもしれませんが、短く意味が伝わらない名前より、長くて意味が伝わる名前の方が良いと思います。理想は短く伝わること(できるなら1語)です、より理想に近い名前づけを意識すると良いかと思います。(`i` や `id` などデファクトスタンダードな名前に関しては例外)

“`.java
class Identifier {
String value;

Identifier(String value) {
this.value = value;
}

String value() {
return value;
}
}
“`

## 出来るだけ独自型を使用する
`String` や `int` など言語にすでにある型は独自アプリケーションの概念を表現するには向いていないように感じます。よく変数

元記事を表示

Spring AOPの技術によるシステムログ出力を行う

### Spring AOPとは
 Spring Frameworkにおいて、DI(Dependency Injection、依存性注入)と並び重要な根幹技術となっているのが「AOP」というものです。
 AOPは、「Aspect Oriented Programming(アスペクト指向プログラミング)」の略です。アスペクトというのは、一般に「横断的関心事」と呼ばれるものです。

### 環境
– spring
– java8
– Log4j

### Spring AOPのアノテーション用語
1.@Aspect
  @Aspectをクラスにつけることで、そのクラスはAspectとして認識されます。
2.@Pointcut
  横断的な処理を挿入する場所(メソッド)を指定する。
3.@Before
  対象のメソッドの処理前に実行されるAdviceです。
4.@After
  対象のメソッドの処理結果に関わらず、必ず実行されるAdviceです。
5.@AfterReturning
  対象のメソッドの処理が正しく終了した場合にのみ実行されるAdviceです。
6.@AfterThro

元記事を表示

private,protected,privateのアクセス権-java

privateの代わりにprotectedを用いると、
クラス内とサブクラスからのみアクセスを許すフィールドを作ることができます。

「public」「protected」「private」の3つのアクセス権について
**・public**: どこからでもアクセス可能
**・protected**: そのクラスと子クラス内からのみアクセス可能
**・private**: そのクラス内からのみアクセス可能(クラス外からのアクセスにはゲッター&セッターが必要)
**・デフォルト修飾子**:ある要素に何も指定しなかった場合、その要素のアクセスはデフォルトとみなされ、同じパッケージ内のクラスから利用可能になります。

| アクセス権| public| protected | private |デフォルト|
|:————|:———-:|:——:|:—:|:—–:|
| クラス内   | ○ | ○ |○|○
| サブクラス内 | ○ | ○ |×|×
| クラ

元記事を表示

【合格体験記】新人がJavaBrozne1週間チャレンジ

#はじめに
**Java Bronze試験に受かりました。**

今回は
「とりあえずSilverの前準備というか肩慣らし(Silverはまだハードルが高いかなと)」
「[この前Rubyの資格は取った](https://qiita.com/Kakese_Chan/items/42d973ffffda05c2537d)ので、Javaの方にもなにか箔をつけておきたい」
「資格手当と昇給」
みたいな理由で受験しました。

また出題範囲的にも**オブジェクト指向(コンストラクタ・継承・インターフェースなど)の問題が目立ち**、まだ自分の中で少し漠然としているオブジェクト指向のトレーニングとしてもいいかなと思いました。

この資格が実用的かどうかで言うと若干微妙かもしれません、出題範囲的に日付型どころかtry-catchすら見かけないので「これでアプリケーションが作れるぞ!」っていう資格ではないかなと思いました。

Javaの実用的な資格というよりは**オブジェクト指向の検定**みたいなニュアンスが強いなっていう感想です。

# 1週間で受験

最初から1週間で受けるつもりはなく、大分結果論的な

元記事を表示

Spring Boot で 404 Not Found などのエラーが発生した際の表示をカスタマイズする

## 今回の環境

– Spring Boot 2.2.0
– Spring Boot Thymeleaf Starter 2.2.0
– Thymeleaf 3.0.11

## デフォルトでは Whitelabel Error Page や JSON が返される

Web ブラウザでアクセスした際にエラーが発生すると、デフォルトでは以下のような Whitelabel Error Page というのが表示されるようになっている。

“`
Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Wed Nov 06 18:38:41 JST 2019
There was an unexpected error (type=Internal Server Error, status=500).
This is a sample error.
“`

[Spring Boot Reference Documenta

元記事を表示

Here Few Upcoming Trends with Angular 8 for 2020

Being one of the most popular software development instruments today, Angular has received a lot of recommendations and recognition from the development community all over the world.

With the rise in popularity of using Angular for building user interfaces, the development community has grown. Heading towards 2020, Angular has a lot for the industries and thus is giving us the opportunity to explore its functionalities, features, and benefits for web and mobile app development.
**1.Enterprise

元記事を表示

Springやってみた。

##[改訂新版]Spring入門 ――環境構築
有名な本ですが、下記の手順がないとやりにくいので
共有します。
[改訂新版]Spring入門
――Javaフレームワーク・より良い設計とアーキテクチャ
http://gihyo.jp/book/2016/978-4-7741-8217-9

手順

・上記記載のgithubからサンプル取得
今回の取得プロジェクト:mvc
・下の二つのアドレスを参考に環境構築
https://qiita.com/yu_eguchi/items/9a56e6c6281c1f0435ff

STSにプロジェクトをインポートする


・アドレスをたどって
表示成功
http://localhost:8080/mvc/customer

元記事を表示

Java Word文書をマージする

この文は以下の2つの方法を使用して、Javaアプリケーションでword文書をマージします。

方法1: 結合された文書は新しいページから開始されます
方法2:前文を受けるWord文書をマージする

DockmentクラスのinsertTextFroomFile()を使用して、異なるドキュメントを同じドキュメントに統合できます。この方法でドキュメントを結合すると、結合されたドキュメントの内容がデフォルトで新しいページから表示されます。

“`java

import com.spire.doc.Document;
import com.spire.doc.FileFormat;

public class MergeWordDocument {
public static void main(String[] args){

//最初の文書を取得するパス
String filePath1 = “merge1.docx”;

// 2番目の文書のパスを取得します
String filePath2 = “merge2

元記事を表示

Java 単体テスト 指定曜日判定 ArDate,Date,Calendar,longが指定された曜日であるかを判定する.

目次 ⇒ [Java単体テストライブラリ-Artery-サンプル](https://qiita.com/artery/items/77666d51b538d35fa2a5)

“`java
package jp.avaj.lib.test;

import java.util.Calendar;

import jp.avaj.lib.algo.ArDateUtil;
import jp.avaj.lib.algo.ArYoubi;

/**
Java 単体テスト 指定曜日判定 ArDate,Date,Calendar,longが指定された曜日であるかを判定する.

・このサンプルではCalendarが指定曜日であるかを判定する.
*/
public class Q05_03 {
public static void main(String[] args) {
// テストケースを開始する – 集計が不要の場合は不要.
ArTest.startTestCase(“Q05_03”);

// 確認したい曜日 – 火曜日
ArYoubi youb

元記事を表示

Java 備忘録(羅列)

#メモ程度の備忘録

##◆コンパイルエラー
###・エラー:\がありません。
型の指定がされているか確認。

##◆警告(クラスファイルは生成されている)
###・注意:『ファイル名』の操作は、未チェックまたは安全ではありません。
注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルをしてください。
ジェネリクス<>による型推論の記載がされているか確認。

##◆その他
###・インスタンスイニシャライザ
ArrayListやHashMapを一行で初期化できる。

“`
//{{}} ←これがインスタンスイニシャライザの構文

List list = new ArrayList<>() {{add(“A”); add(“B”); add(“C”);}}

//可読性を考えると以下になる。

List list = new ArrayList<> {
{ add(“A”);
add(“B”);
add(“C”);
}
}
“`

###・instanceof演算子
左辺(イ

元記事を表示

SpringBoot+MVCで、リクエストパラメータの型変換を登録する

# SpringMVCによるリクエストパラメータ自動型変換
SpringMVCではリクエストパラメータを適切な型に変換します。デフォルトの型変換が提供されているので、これ以外の型(自作したクラスに格納する、自動的に解決する型とは別の型)に格納したい場合は、SpringMVCの設定にて型変換に登録します。

例:日付の入力をjava.time.LocalDateに変換する(デフォルトでjava.util.Date)場合

“`java:SampleModelController.java
import java.time.LocalDate;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.Reque

元記事を表示

Java メソッド一覧 (私的)

#java メソッド一覧

##◆java.util.*;
**・Collections.unmodifiableXXX(【ListやMapのインスタンス】);**

“`
//finalだけだと再代入はできないが、要素の追加・削除ができてしまう。
//unmodifiableXXXによって要素の変更をできなくする。
//変更しようとすると「UnsupportedOperationException」がthrowされる。

//List (インスタンスイニシャライザの行末にセミコロンはつけない)
private static final List LIST_1 = Collections.unmodifiableList( new ArrayList() {{ add(“X”); add(“Y”); }} );

//Map
private static final Map MAP_1 = Collections.unmodifiableMap( new HashMap() {{

元記事を表示

Spring Boot 2.2 ドキュメントまとめ

## Spring Boot 2.2.0 リリース情報

– [Spring Boot 2\.2\.0](https://spring.io/blog/2019/10/16/spring-boot-2-2-0)
– [Spring Boot 2\.2 Release Notes](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.2-Release-Notes)

## 対応している Java のバージョン

Long-Term Support (LTS) バージョンである Java 8, Java 11 は完全にサポート。
LTS ではない Java 10, Java 12, Java 13 は技術的に可能な限り対処するが、サービスレベルの保証は提供されない。

[Spring Boot 2\.2\.0](https://spring.io/blog/2019/10/16/spring-boot-2-2-0)

> Following on from Spring Framework 5.2’s sup

元記事を表示

Linux OSデフォルト javaコマンド切り替え

#Linux OSデフォルト javaコマンド切り替え方法
Linuxで利用できるjavaとしてopensourceのopenjdkやadoptjdkが存在。デフォルトで使うjavaの切り替え方法

“`ruby:デフォルトのjava切り替え方法

#java切り替え
[root@XXX ]# alternatives –config java

3 プログラムがあり ‘java’ を提供します。

選択 コマンド
———————————————–
* 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.amzn2.0.1.x86_64/jre/bin/java)
2 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.231-2.6.19.1.amzn2.0.1.x86_64

元記事を表示

[悲劇]ジャバを愛したseasar

筆者は数少ないseasar1の利用者である。DIコンテナのseasar2ではなくseasar1だ。

## seasarとの出会い

 2003年くらいだったかなあ。筆者は当時とある金融系事業会社のシステム子会社にいた。その親会社の社長と役員が大株主側と折り合いが合わなくてスピンアウトし、別の金融系事業会社を作った。筆者も誘われたのだが元のシステムでつくりかけのものがあったので、これをリリースしてからまた考えたいと返事した気がする。相手先はそれを待ってられないし、システム子会社で過去に使ったことのある人達に連絡をとって、バックシステム、プライスコントローラー、PC向けオンライントレードシステムを作った。

 システム子会社で協力してもらったのは筆者がジョインする前で、詳しいことはよくわからないのだがあまり評判は良くない感じだった。でもシステム系のツテが少ないので、彼らしか選択肢がなかったらしい。なおデザイナーも同じ人だった。この会社に納品するときに受け入れテストを行ったらしいのだが、単体レベルが大量にでる状態で受け入れ検証どころではなかったらしく、新会社に顔出すたびにいろんな人に「今の

元記事を表示

OTHERカテゴリの最新記事