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

JAVA関連のことを調べてみた2021年11月13日
目次

実行時にアノテーション@Overrideが見つからなかった話

## これはなんですか
Java屋さん向けのjava.lang.Classやjava.lang.Methodやアノテーションを使ったあれやこれやする浅瀬くらいの深みな話。
ソース中でstream構文等を使用しているためjava9未満のバージョンをお使いの方はよくわからないかもしれませんが、心の目で見ればわかる、かも。

## やりたいこと

1. インターフェースに書いてあるメソッドをimplementsしたメソッドに @Override を書いてない輩を見つけたらあんじょうよろしゅうしたい
2. そうだ、単体テストで見つけよう!
3. 結論:だめでした

### 検証その1 指定したクラスのメソッド一覧を取得する

単体テストのコード

“` Java
import java.util.Arrays;
import org.junit.jupiter.api.Test;

public class FindOverrideTest {

@Test
public void test() {
Arrays.stream(Class1.class.getMethods

元記事を表示

【Android】BottomNavigationView(画面下部のナビゲーションビュー)の実装(Java)

最近、独自でAndroid のアプリを書いているので、それのメモ書きぐらいのつもりで書いています。
独自で書いているコードは下記に収めてあるので、気になる方は下記をご覧ください。
(「カレンダー_設計書.xlsx」に完成図がざっくりと書いてあります。)
https://github.com/NagaJun1/OriginalCalendar

#「BottomNavigationView」とは?
下記画像の、赤枠の部分がそれです。
今回の記事の題名には「Java」と書いてありますが、実装方法自体は「xml」で実装します。
![ナビゲーションバー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/b5204b73-9f70-d32e-a279-d3b00bde96dd.png)

#実装
ソースコードは下記の通りです。
(各ソースの配置位置は、Andoid Studioでプロジェクトを生成した基本的な構造を想定しています。)

“`xml:\res\layout\activity_main.x

元記事を表示

【図解で理解】Javaのinterfaceのメリットと使い方について

目的

・Javaのinterfaceのメリットと使い方を理解する

interfaceとは

メソッドの具体的な処理は記載せずに「変数」「メソッドの型」を明記したもの。

要約すると、
他のクラスで使用する変数とメソッドが明記されたファイル。

interfaceのメリット

・予め規格(ルール)を決めておけばその通りに作成することができ、保守性が上がり複数人での開発の際に実装が複雑化せずに済む。

・改修が発生した場合でも追加で改修を実装するだけで、大元の呼び出しクラスへの影響を抑えられる効果もありテストの工数を短縮することも可能。

▼インタフェースがない世界
![インタフェースがない世界.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491501/7e71824b-7f5b-6020-62b4-5d7ca93b834e.jpeg)

複数人で開発をしていると必ずしも統一したプログラムを組んでいるとは限らず、クラスによっては

元記事を表示

Couchbase Lite機能解説:ローカルデータ同期

## 概要

Couchbase Liteは、ローカルにあるふたつのデータベース間のレプリケーションをサポートしています。これにより、Couchbase Liteデータベースのデータをセカンダリストレージに保存することできます。

以下は、ローカルデータ同期のコーディング例です。

“`JAVA
DatabaseEndpoint targetDatabase = new DatabaseEndpoint(database2);
ReplicatorConfiguration replicatorConfig = new ReplicatorConfiguration(database1, targetDatabase);
replicatorConfig.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PUSH);

// レプリケーターを作成します(レプリケーターがGCされるのを防ぐために、参照が保持されている必要があります)
replicator = new Replicator(replicatorConfig)

元記事を表示

Spring Bootで簡単なWebアプリを作ってみたい!【準備からGet・Post表示まで】

# 【経緯】
Javaの入門書である「スッキリわかるJava入門」を読み終わったので、なにかWebアプリを作ってみたいと思ったのがきっかけです。
ちょうど業務でSpring Bootが使われていたので勉強を始めたのですが、チュートリアルが少なく苦労しているので、備忘録的にまとめてみようと思います。

# 【対象読者】
Javaの入門書を読み終わって、これからWebアプリを作ってみたいと思っているひと向けです。
「とりあえず動かすこと」を優先にまとめています。

# 【この記事でやること】
– ブラウザでHello Worldを表示させてみる
– Getで値を渡してみる
– Postで値を渡してみる

# 【開発環境】
– OS:Windows 10 Pro
– IDE:IntelliJ IDEA 2021.2.2(Community Edition)
– Java:openjdk 11.0.2 2019-01-15
– Spring Boot:2.5.6

# 【準備編】
ここでは、環境構築の際に参考にしたサイトをまとめています。

## ■IntelliJのインストール
Intel

元記事を表示

Couchbase Lite 機能解説:ロギングAPI

## 概要
Couchbase LiteのロギングAPIについて解説します。

ログ出力には、次のふたつのストリームがあります。

#### ファイルベースロギング

ファイルベースロギングでは、ログはログレベルでフィルタリングされた個別のログファイルに書き込まれます。
また、各ログレベルは個別のポリシーを持ちます。

#### コンソールベースロギング

コンソールロギングを使用すると、問題の調査のために通常のファイルベースのロギングに干渉することなく、特定のデバッグシナリオに合わせて診断出力を調整できます。

#### カスタムロギング

Loggerインターフェースを使用してカスタムロギングクラスを実装できます。

## コンソールベースロギング

コンソールログはファイルログとは独立しています。そのため、ファイルログストリームを損なうことなく変更を加えることができます。

コンソールログは、デフォルトで有効になっています。デフォルト設定を変更するには、`Database.log`のメソッドを使用して必要な値を設定します。

次の例では、コンソールベースのログのドメイ

元記事を表示

Android 11 API30 以降に対応したアプリ開発用メモ

2021年11月からプレイストアの要件でターゲットAPIバージョンが30以降になったことに伴い、作業で躓いたポイントのメモです。

——-

## 前提
Android API30 の要件により、端末内へのアクセスなどをする場合は以降に記載する作業が必要になっています。
私の場合はアプリからブラウザを呼び出すために作業が必要でした。
[Android でのパッケージの公開設定のフィルタリング  |  Android デベロッパー  |  Android Developers](https://developer.android.com/training/package-visibility)

## AndroidManifest.xml への追記
プロジェクト名/android/app/src/main/__AndroidManifest.xml__
に必要な情報を追記します。
私の場合は以下を記載しました。
“`


Java 標準出力から二次元配列での受け取り方、行列の入れ替え方

#Java 標準出力から二次元配列での受け取り方、行列の入れ替え方

##行(横)ごとに値を受け取る
####inputがint型の場合

【input】
1 2 3
4 5 6
7 8 9
0 1 2

“`java
// スキャナークラスのロード
Scanner scan = new Scanner(System.in);
// 受け取り用配列
int[][] line = new int[4][3];

// トークン取得、配列格納
for (int i = 0; i < 4; i++) { line[i] = new int[3]; for (int j = 0; j < 3; j++) { line[i][j] = scan.nextInt(); } } // 配列の中身表示 for (int i = 0; i < line.length; i++) { for (int j = 0; j < line[0].length; j++) { System.out.println("line[" + i + "][" + j + "] = " + line

元記事を表示

SpringSecurityの基本のき

最近、現場でログイン機能を実装する機会がありました。
SpringSecurityというフレームワークを使用したのですが、クセが強くてとっつきにくかったので記事にしておこうと思いました!
完全に理解しきれておらず、変な部分もあるかもしれませんがご了承ください。

##SpringSecurityとは
アプリケーションにセキュリティ機能を追加するフレームワークです。
主に、認証機能、認可機能を提供します!

##ファイル構成

今回動作させたファイル構成になります。

“`
├ src/main/java
└ com.example.demo
└ SecurityConfig.java
├ controller
├ AdminController.java
├ LoginController.java
└ SuccessController.java
├ model
├ CustomUserDetails.java
└ User.java
├ repository
        ├ LoginRepository.jav

元記事を表示

HTTP domain

“`
String toDomainUrl = getToDomainUrl(request.getRequestURL(), request.getServletPaht());

private String toDomainUrl(StringBuffer requestURL, String servletPath){
return requestURL.delete(requestURL.indexOf(servletPath), requestURL.length()).toString();
}

“`

元記事を表示

【C#・Java】DBで絞り込み検索

#絞り込み検索のサンプルコード
テーブルに対して絞り込み検索を行うために必要なSQL文を生成するロジックです。
そのままでは使えませんので適宜編集してください。

###C#版 サンプルコード

“`csharp:Refinement.cs
string cnd1 = textBox1.Text;
string cnd2 = textBox2.Text;
string cnd3 = textBox3.Text;
string cnd4 = textBox4.Text;
string cnd5 = textBox5.Text;

List List = new List();

// 絞り込み条件式の生成
if (!cnd1.Equals(“”))
{
List.Add(“CONTRACT_DATE>='” + cnd1 + “‘ “); // (例)契約日付の最小値
}
if (!cnd2.Equals(“”))
{
List.Add(“CONTRACT_DATE<'" + cnd2 + "' "); // (例)契約日付の最大値 } if (!c

元記事を表示

springframework.security JWT実装サンプル

# はじめに
springframework.securityでのJWT実装サンプルです調べてみると、「難しい・分からない」みたいなコメントがたくさん出てくるので、まとめます
実際、ほかにもサンプルはあるのですが、コピペしても動かないことが多々あったのでサンプルの1つとしてどうぞまた、「難しい・分からない」を解消するために処理の流れも追っていきたいと思います

# ソース
下記のソースをダウンロードしておいてください

https://github.com/HawkClaws/SpringSecurityJWTExample

# 必要なクラス群
+ SecurityConfig
– springframework.securityのconfigを記載
+ User
– springframework.securityの「UserDetails」の実装
+ UserRepository
– UserモデルのRepository
+ UserServiceImpl
– springframework.securityの「UserDetailsService」の実装
+ J

元記事を表示

【Scala】値制約(Refined依存型)をmatchのcase条件節で使う方法:case classを使え!

以前書いた記事では、ユーザ定義の依存型のクラス名(type別名)を使って、型レベルのパターンマッチを試みに成功しませんでした。

https://qiita.com/electronics_diy721/items/391ab4b9e1d78ee3a7a6

Refinedで定義した値制約に、__*type*キーワード__で__別名*ConditionedInt*__を付けた後、

>“`Scala:sbtConsole
>scala> type ConditionedInt = Int Refined Interval.ClosedOpen[10000, 10000000]
>type ConditionedInt
>
>scala>
>“`

case節のマッチング対象に、Stringと並んで、__*ConditionedInt*__を指定すると、認識されない。

>“`Scala:sbtConsole
>scala> def class_check(a: Any) = {
> | a match {
> (省略)
> | case _:

元記事を表示

Java PDFを透過的な背景付きの画像に変換

Spire.PDF for Javaは、PDFのドキュメントをイメージに変換するために、Pdfdocument.saveasy ()メソッドを提供しています。バージョン4.11.1以降、PDFファイルのイメージ変換機能をサポートしてきています。さて、この記事ではJavaアプリケーションでPDFを透過的な背景付きの画像に変換する方法を紹介していきたいと思います。

下準備

1.E-iceblueの公式サイトからSpire. PDF for Javaをダウンロードしてください。

<

元記事を表示

Processingを利用して魚群再現をする(2)

[Processingを利用して魚群再現をする(1)](https://qiita.com/siro_mochi/items/ea11a839ee699a4561dd)からの続きです。
Processingはカメラを利用することによって、鑑賞者の動作によりイメージを変化させていくインタラクティブデザインを作ることが可能になっています。

#webカメラの利用
せっかくProcessingを利用しているので、カメラを利用してインタラクティブデザインとして発展させていきます。人によってはカメラの画像を利用して、オプティカルフローの実装を行っていますが、それはまたの機会にやります。
Processingでは画像イメージをPImage型として利用します。
PImage型の詳細なテキストは[リファレンス](https://processing.org/reference/PImage.html) に載っています。
PImageの配列の値を利用して、画像に対して魚の動きが変わっていくように実装していきます。

##Webカメラの起動
それではWebカメラの起動から行ってきます。
今回は画像処理ライ

元記事を表示

Couchbase Lite 機能解説:インデックス作成

Couchbase Liteの機能全般について、以下の記事も合わせてご参照ください。

https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417

## 概要

インデックスを作成すると、クエリのパフォーマンスを高速化できます。クエリは、インデックスを利用して、ドキュメントのセットを絞り込むことができれば、より迅速に結果を返すことができます。

## 新しいインデックスの作成

次のデータモデルに含まれる`type`、`name`プロパティを指定して新しいインデックスを作成します。

データモデル

“`JSON
{
“_id”: “hotel123”,
“type”: “hotel”,
“name”: “Apple Droid”
}
“`

インデックスを作成するコードは次のようになります。

##### Android

“`JAVA
database.createIndex(
“TypeNameIndex”,
IndexBuilder.valueIndex(

元記事を表示

AtCoder226をやった(Java)

AtCoder226をやった。

##[A](https://atcoder.jp/contests/abc226/tasks/abc226_a)
四捨五入の問題、
JavaのRound関数で一発だった。
Roundを使って、もし”まるめ”などの事象に遭遇した場合、整数部と小数部で受け取り方を変えるのが良策な気がします。

“`
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
System.out.println(Math.round(Double.parseDouble(str)));
}
}
“`

##[B](https://atcoder.jp/contests/abc226/tasks/abc226_b)
何通りのパターンが

元記事を表示

C言語の構造体が分からなかったがなんとなくわかった話

結構初歩的な話ですが、自分用メモ。
個人的に、C→Javaは入りやすいイメージですがJava→Cはなんとも。。。
構造体はJavaのクラスのように、構造体の中で定義されたデータ型はメンバ変数のように扱うのです。

※ここではアロー演算子については触れません。

##Javaソース
クラスHogeをインスタンス生成することで、Hogeクラスのint型変数の値を出力、書き換えができます。

“`
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Hoge hoge = new Hoge();
System.out.println(hoge.num);
hoge.num = 6;
System.out.println(hoge.num);
}
}
class Hoge{
int num = 5;
}
“`

##C言語ソース
**実体**を持つ構造体に限る

元記事を表示

【Scala】関数の引数にRefined値制約を付ける場合、その引数にリテラル値ではない「変数x」が渡された場合も正常に動作させる方法

Refinedで定義された値制約が付いたオブジェクトは、数値リテラル(1, 175など)や文字列リテラル(”abc”など)を与えると、オブジェクトを初期化宣言させることができます。

他方で、すでに定義済みの変数(x, y, customer_name, sales_volumeなど)で初期化宣言をしようとすると、「リテラル値でないと受付けられません」というエラーメッセージが吐かれてしまいます。

そのため、関数の引数にRefined値制約を付ける場合、その引数にリテラル値ではない「変数x」が渡された場合は、エラーが発生してしまうことになります。

そうした事例が、以下のウェブページで報告されています。

http://ja.uwenku.com/question/p-daphfiiv-gp.html

>“`Scala:
>package xxx
>
>import eu.timepit.refined._
>import eu.timepit.refined.api.{Refined, Validate}
>import eu.timepit.refined.auto._

元記事を表示

【個人開発】独学 + 職業訓練校でプログラミングを学び、ブックマークサービスを作りました。

# 1. はじめに
シンプルを追求したブックマークサービス「5Keeps」(ファイブキープス)を作りました。

|![5Keeps_ogp_jp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1048052/ecccda94-9098-ca42-c67e-6eb9e5aa5a1f.png)|
|:–|

2020年11月に未経験からプログラミングの学習を開始して、あっという間に1年が過ぎ去り、ようやく自作アプリのリリースにこぎつけました。この記事では、前半に開発したサービスについて解説し、後半に1年間の学習の過程をまとめています。

– 5Keepsへのリンク
https://www.5keeps.com/

– ソースコード
https://github.com/daichihayasaka/five_keeps_ver01

# 2. サービスについて
### 2-1. サービス概要
#### 解決したい課題
プログラミング学習の環境は、時間や場所によって様々です。私の場合、家やカフェではMacb

元記事を表示

OTHERカテゴリの最新記事