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

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

【Java】ジェネリクスの型パラメータTでインスタンス化してみる

## 型パラメータのインスタンス化に関して
Javaでジェネリクスを使ったクラスやメソッドを、定義する時があると思います。定義の概要については[Java ジェネリクス(クラス、メソッドを定義する)](https://qiita.com/rodentia6/items/b36d134fa24867ba4d63)の記事をご参照頂ければと思います。
さて、このジェネリクスでの型パラメータの制約ですが、上記の記事にもある通り「new T()できない」や「new T[]できない」といった制約があります。つまり以下のようなコードはコンパイルでエラーとなります。

“`java
class TypeParamTest {
public T tObject;
TypeParamTest() {
this.tObject = new T(); // コンパイルエラー
}
}
“`

[Javaのジェネリクスで,T.class や new T() ができず悩んだ話 (型パラメータのインスタンス化に関し、フレームワーク設計からケーススタディ)](https:

元記事を表示

JUnitでIOExceptionをテストする方法

Javaでファイルの出力を行うクラスを作成して、JUnitのテストを作成するときに、IOExceptionが発生するテストを実施する必要があります。IOExceptionを発生する方法を調べましたので、ここでそのやり方を説明します。

以下のファイル出力クラスを例として説明します。

“`java
public class FileIOExample {
public boolean writeFile() {
File file = new File(“c://temp//a.txt”);

try (OutputStream outstream = new FileOutputStream(file)) {
String data = “text to write\n”;
outstream.write(data.getBytes()); // ①
return true;
} catch (IOException ex) {
e

元記事を表示

【WebエンジニアのAtcoder記】入緑しました!

先日行われたABC215にて,ついに入緑しました!!
かれこれ,1年以上かかった結構長い道のりになったので,これまでの勉強過程と現時点の自身のスペック等をまとめます.

image.png

# 自己紹介
– Webエンジニア2年目
– Web系の企業で開発運用業務に従事
– 学部は機械系,研究室配属(学部4年時)以降と修士の2年間では情報検索,NLPの研究
– 修士在学中,JASSO奨学金免除達成(半額)
– 学部が情報系のバックグラウンドではない※1
– ※1:そもそも思い出すと大学2年に進級するとき主専攻振り分けがあるのですが,情報系を選ばなかったのははじ

元記事を表示

JUnit 4.xをEclipseで実行するとNullPointerException

新しいEclipseで古いJUnit 4を起動するとNullPointerExceptionになる。新しい・古いは曖昧な表現だが、たとえば、この現象が発生する具体的なバージョンの例は以下の通り。

# 環境
* jdk 1.8
* Eclipse 2021-06(4.20.0)
* Junit 4.3

# 現象
エラーログは以下の通り。

“`java
java.lang.NullPointerException
at org.eclipse.jdt.internal.junit4.runner.SubForestFilter.shouldRun(SubForestFilter.java:84)
at org.junit.internal.runners.TestClassMethodsRunner.filter(TestClassMethodsRunner.java:84)
at org.junit.runner.manipulation.Filter.apply(Filter.java:47)
at org.junit.internal.runners.TestClas

元記事を表示

動画で学ぶJHipster (5) (エンティティ生成)

# 参考動画

# エンティティの生成
エンティティの自動生成について、
以下は、動画の[テキスト](https://github.com/mraible/jhipster7-demo#generate-entities)に書かれている説明のgoogle翻訳。
JHipsterはいろんなものを生成してくれるようです。

>作成するエンティティごとに、次のものが必要になります。
・データベーステーブル。
・Liquibaseチェンジセット。
・JPAエンティティクラス。
・SpringDataJpaRepositoryインターフェース。
・SpringMVCRestControllerクラス。
・Angularリストコンポーネント、編集コンポーネント、サービス。そして
・コンポーネントごとにいくつかのHTMLページ。

>また、すべてが機能することを確認するための統合テストと、高速に実行されることを確認するためのパフォーマンステストが必要です。理想的な世界では、Angularコードの単体テストと統合テ

元記事を表示

JavaユーザーがPythonを使って印象的だった点

# はじめに
最近Pythonを用いてLambdaを開発する機会がありました。今までJavaを中心に開発してきた自分にとっては新鮮な経験で、Javaと違ってPythonだとこのように書く・書けるのかと感じたところがありました。

今回はJavaを中心に使用している開発者目線でPythonに触れて印象的だった点を書いてみようと思います。

ちなみにPythonのバージョンは3.8です。

## クラスとメソッド、アクセス制限
オブジェクト指向に慣れるとクラスにデータとメソッドをカプセル化したくなります。

例えばJavaの場合だと

“`Java:PersonName.java

public class PersonName {
private String firstName;
private String lastName;

public PersonName(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}

元記事を表示

Javaのコンパイルと実行を同時に行うバッチファイル

# はじめに
javaの勉強で簡単なコードを書くためにわざわざEclipseを起動するのは面倒です。かといって、コンパイルと実行をコマンドで別々に行うのも面倒です。

そこで、コンパイルと実行を同時に行い、Pythonのように実行できるバッチフィルを作成しました。バッチファイルですのでWindows専用です。

## 実行例

テストコード(Main.java)

“`java
/* Main.java */
/* UTF-8で保存 */
public class Main {
public static void main(String[] args) {
System.out.println(“Hello java!”);
for(String arg : args){
System.out.println(arg); // 引数を表示
}
}
}
“`

javac、javaコマンドを使って行う場合(2回コマンドを入力する必要があります)

“`
>javac -encoding UTF-8 Main.java
>java Main hoge pi

元記事を表示

[Android × 株] ヒートマップを作る (ツリーマップ)

S&P500などでよく見られるヒートマップ

業務で使用するにあたり、実装方法を調べたが日本語の記事どころか英語の記事もほとんどなかったので、実装方法をなるべく分かりやすく書いていきます。
ライブラリは使いません。
kotlinを用いて実装します。

## まずは完成形

Screenshot_20210821-142541.png

## 超ざっくりと実装の流れを説明

* 株価データの作成
* 株価データも基に座標を計算
* 座標データを元にCanvasで描画

## 実装

### まずは株価データ用のデータクラスを作成します

“`kotlin:StockData
// 株価データ
data class StockData(
// 運用額
var amount:Double,

元記事を表示

flutterで端末の気圧センサーを用いたpluginを自作して公開してみた

#

# 下準備

まずこれを呼び出します。

`flutter create –template=plugin –platforms=android,ios -a java flutter_barometer`

テンプレート作成時に追加されている、 `example` ディレクトリで

`flutter build apk`

`flutter build ios –no-codesign`

を実行し、事前にアプリをビルドします。

# 作成

### Android
Android Studioで `[プラグイン名]/example/android/build.gradle` を選択してプロジェクトを開きます。

サイドバーにある`[プラグイン名]/java/[パッケージ名]/[プラグイン名]Plugin` というファイルに実装していきます。

### iOS

Xcodeで `[プラグイン名]/example/ios/Runner.xcworkspace` を選択してプロジェクトを開きます。

サイドバーにある

`Pods/Development Pods/hel

元記事を表示

(solved) Maven: CompilationFailureException: Compilation failure

`JAVA_HOME` が設定されていなかったというありがちなやつですが、次に同じことが起こったときに手間取らないように覚書。

# 状況

対象: [Apache PDFBox](https://pdfbox.apache.org/)([GitHub mirror](https://github.com/apache/pdfbox)) 2.0.21

README にしたがって `mvn clean install` を実行するとコンパイルで失敗する。

スタックトレース:

“`
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:compile (default-compile) on project fontbox: Compilation failure -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.ma

元記事を表示

Domaを書く時に用意する最低限3ファイルの具体例

# Domaでデータアクセスするのに必要なのは以下の3ファイル

1. エンティティ
2. Daoインターフェース
3. SQLテンプレート

##1. エンティティ(User.java)
データベースのデータ本体を表すクラス

“`Java:User.java
@Table(name = “users”)
@Entity
@Getter
@Setter
public class User extends DomaDtoImopl{
private static final long serialVersionUID = 123456789123456L

@OriginalStates
User originalstates;

@Id
@Column(name =”user_id”)
@GenerateValue(strategy = GenerationType.IDENTITY)
Long id;
String password;
String firstName;
String lastName;
}

元記事を表示

Java × GoogleCalendarAPI でタスク管理アプリ

#はじめに
ポートフォリオとして制作したアプリケーションのポイントを投稿させていただきます。
ポートフォリオURL:https://task-time.net
(まだGoogleCloudPlatformの審査中のため、ログインページから先は進めません。)
GitHub:https://github.com/Nakamura9310/TaskTime

#アプリケーションのコンセプト
### 「①全タスクをメモし②所要時間を見積もり③全てカレンダーに入れる」ことで
###多忙な時に真価を発揮する、タイムマネジメントアプリ

前職時に本当に多忙な毎日を送る中で、タイムマネジメントの重要性を知りました。
タスクをメモするだけではダメです。
どのタスクに何時間かける予定か、カレンダーに落とし込むことができていれば、
タイムマネジメントができているといえます。

_①〜③ができていると_
_→新しいタスクが発生した時に、いつ実行可能なのか瞬時に判断できる。_

_①〜③ができていないと…_

_▲下手にタスクを受け、期限内に終わらない量のタスクを抱えることになる。_
_→一人でタスクを抱え込み

元記事を表示

IBM Semeru Runtimes 無償で利用できる新しいJava実行環境

OpenでFreeなJava実行環境を提供してきたOpenJDKのディストリビューション[AdoptOpenJDK](https://adoptopenjdk.net/)は,2021年7月末で更新を終了しました。8月以降は[Eclipse Adoptiumプロジェクト](https://adoptium.net/)および[IBM Developerサイト](https://developer.ibm.com/languages/java/semeru-runtimes/)から配布が継続されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60041/791317d7-34c2-51cd-24c7-9caf2e0f90f4.png)

AdoptOpenJDKでは,OpenJDKの標準のJVMであるHotSpot VMを含んだものの他に,もう一つのJVMであるOpenJ9を含んだディストリビューションも配布していました。HotSpot VMは,もともとSun Microsystemsが

元記事を表示

enum class の使用例

## はじめに
今まで enum はただ定数を保管しておくためのクラスだと思っていたが、業務の中で自分が知らなかった方法で enum を使用していたし、便利だなと思ったのでメモとして残す。

Java Silver の試験には出てこなかった。

## enum class

(1) enum でもコンストラクタの定義ができる。
・ ここでは引数で受け取った名前と血液型を決定

(2) メソッド `getPesonInfo` で `PesonInfo` を初期化して返す。
・ この enum クラスにセットされた名前と血液型を使用して初期化した`PesonInfo`を返す。

“`java
package enumTest;

public enum Persons {
// (3)
TARO(“田中太郎”,”AB型”),
YUKA(“佐々木優花”, “O型”);

// (1)
Persons(String name, String bloodType){
this.name = name;
this.blood

元記事を表示

【Java】【Ruby】配列内の偶数を数える

 とても簡単ですが、RubyとJavaで、配列内の偶数を数えるプログラムを作りました。「配列を引数として渡すにはどうしたら良いのだろう」という疑問からひとまず作ったものです。

## Ruby

“`ruby
def count_evens(nums)
count = 0
nums.each do |num|
if num.even?
count += 1
end
end
puts count
end

count_evens([2, 1, 7, 8, 2, 3, 4])
count_evens([2, 2, 6, 5, 0])
count_evens([1, 3, 11, 5])
“`

## Java

– メソッドを定義したクラス

“`java
package example;

public class CountNums {
void countEvens(int[] nums) {
int count = 0;
for(int num : nums) {
if (num % 2 == 0) {

元記事を表示

デザインパターン 一言で表現してみた ~GoF本輪読会まとめ~

初投稿です

#はじめに
以前から、[Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88-Java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80-%E7%B5%90%E5%9F%8E-%E6%B5%A9-ebook/dp/B00I8ATHGW/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=Java+%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3&qid=1629379519&sr=8-1)の輪読会を実施していましたが、最近完遂すること

元記事を表示

Fn (OCI Functions) の Function を FDK を使わずに作成する

# はじめに

掲題に関するコードをGitHubに公開していますが、そもそも素直にFDKを使っておけばいいのに、何でこんな一見無駄に思えることをやってみたのかという動機から、実際にやってみて分かった Fn コンテナの通信の仕組みなどについて、諸々お話をしたいと思います。

https://github.com/tkote/fn-netty

https://github.com/tkote/fn-fastapi

# 動機

Fn には各種言語用の FDK (Function Development Kit) があって、これを使えばあまり難しいことを考える必要もなく、シンプルに入力を受け取って処理をして出力を返すことだけを実装すれば済みます。単純な処理であれば実際 FDK だけで十分でしょう。
しかしなから逆に、何で実装が FDK に縛られないといけないのかという疑問の方が強くなってきました。世の中には様々な言語の優れたフレームワークがあるので、それを流用できた方がいいことが多くあるのではないか? 例えば (Javaの例ですいません…) JAX-RS 準拠のフレームワークで F

元記事を表示

Javaのlibrosa的ライブラリjlibrosaをandroid sturioで使う

最近アンドロイドアプリを作ろうとしているので備忘録

#Javaでサクッと音の特徴量求めたいけどどうしよう
pythonだったらLibrosaに頼るところですが、Javaにも似たようなライブラリがないか探してみたところありました!
その名も[jlibrosa](https://github.com/Subtitle-Synchronizer/jlibrosa)!!!
Java版Librosa作ろうぜ、みたいなところがモチベーションで開発されているようです。
androidでどうやって使うかも、[神記事](https://heartbeat.fritz.ai/a-definitive-guide-for-audio-processing-in-android-with-tensorflow-lite-models-d90de896f0c4)にちょいと書かれており、非常に助かりました。
ただライブラリのインストールのところでちょっと躓いたので記事に残しておきます。

#jlibrosaをandroid studioにライブラリとしてインポートする手順
1. githubからjlibrosa

元記事を表示

Spring MVCで、Filterでリクエストボディとレスポンスボディをログ出力するときの落とし穴と対策

# やりたいこと
リクエストボディとレスポンスボディの内容を、Filterでログ出力したい。

“`bash:ログ出力例
… リクエストボディ = param1=value1&param2=value2
… レスポンスボディ = This is reponse body
“`

> 本来は秘匿情報のマスクなどが必要になりますが、この記事ではその説明を省いています。

# 問題
`HttpServletRequest` や `HttpServletResponse` には、ボディを `String` で取得するようなメソッドは存在しません。前者には `getInputStream()` 、後者には `getOutputStream()` というメソッドがあり、これを使えばボディを取得することはできます( `String` にするにはゴニョゴニョ処理が必要なのですが)。

しかし、 `getXxxStream()` メソッドを使ってしまうとボディが消費されてしまい、その後はボディが取得できなくなってしまいます。

なので `HttpServletRequestWrapper`

元記事を表示

paizaテスト環境(Java編)

paiza( https://paiza.jp/ )で問題を解いていると、「自分の好きな値で試したい」となるときがありませんか?
そんな時にはpaiza.IOがあるじゃないか、と言われるかもしれませんが、自分の開発環境で作ってる場合修正の度いったりきたりで煩わしいと思います(思いました)。
そこで私は自分のローカル環境でテキストファイルを標準入力にもってきて、対象ファイル(クラス)のmainメソッドを呼び出す、簡単な処理を一つ作りました。

それがこれです↓

“`java

package skillCheck;

import java.io.FileInputStream;
import java.io.InputStream;

import skillCheck.rankS.S002;

public class CallMethod {

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

InputStream fileStream = new FileInputStream(

元記事を表示

OTHERカテゴリの最新記事