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

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

AndroidでOkhttpとWebview間でCookie情報を共有するための実装例

Androidアプリで、HTTPクライアントにはOkhttpを使用することが多いですが、OkhttpとWebViewのCookie情報を共有したい時にどうするか悩むことがあるかと思います。

そこで、私が実践している実装例を書いて共有してみようと思います。

## Okhttp/WebViewで共有するCookieを保持するクラスの作成
OkhttpにてHTTPリクエスト時に行うCookie情報の設定は、OkHttpClientにCookiejarインタフェースを実装したクラスを指定する必要があります。(詳細はWebに転がっているので割愛)

この時、以下のようなクラスを作っています。

まず、Okhttp/WebViewのHTTP通信で共通で使用するCookie情報を保持するインタフェースを定義し、その実装クラスを作成します。

“`kotlin:CookieStore.kt
/*
ネイティブ/WebViewのHTTP通信で共通で使用するCookie情報を保持
(実際はその他のメソッドも定義していますが長くなるので割愛)
*/
interface CookieStore {

元記事を表示

Java インタフェースにおける変数

Oracle Certified Java Programmer, Gold SE 11の勉強をしていると、インタフェースの仕様をよく間違えるのでまとめておきます。
今回は変数編です。
## インタフェースにおける変数
どのバージョンのJavaでもインタフェースは`publi static final`な定数を宣言することができます。
`publi static final`な変数以外は許可されていない、つまり変数を定義した場合`publi static final`以外は有り得ないので、アクセス修飾子を省略しても、暗黙的に`publi static final`が付与されます。
`final`な定数なので、宣言時に初期化しなけれなりません。

“`Java: 変数
public interface Calc {

double PI = 3.14; // 暗黙的にpublic static finalが付与されます
// private double PI = 3.14; publicでないのでコンパイルエラーです
// double PI; 初期化されてい

元記事を表示

【初心者】JavaのNullPointerExceptionの犯人探し

# はじめに
Javaの開発者なら誰でも見覚えのあるNullPointerException。初心者がNullPointerExceptionに遭遇すると、見当違いな部分を直してしまったり、デバッグに時間をかけてしまうことがあります。また、ある程度Javaに慣れた方でも、なんとなくでNullPointerExceptionに対応している方もいるのではないでしょうか。

この記事では、NullPointerExceptionが発生した際に、どのオブジェクトがnullでNullPointerExceptionが起きているのか、スタックトレースとソースコードのみで特定する方法をまとめました。

# 問題

さて、まずは問題です。下記にNullPointerExceptionが発生したソースとスタックトレースを記載しました。Java11を使って確認しています。

“`java
public class NPESample {

public static void main(String[] args) {

new SampleObj().getHoge().doM

元記事を表示

ひと言学習メモ2:クラス、フィールド、メソッド

ひと言:
最も基本的な図式↓ (//コメントに記入)
![2022-03-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533051/356978e8-8c83-f874-4dae-d13412b3616e.png)

自己流解釈:
〇クラス
classとくればクラス(;’∀’)

※ちゃんとした定義としては「設計図」のようなものでしょうか[^1]。クラスの中に色々と入れる。
[^1]:『スッキリわかるJava入門』p.302

〇フィールド
クラスの中に変数宣言/変数を定義するところ。

〇メソッド
具体的なやり方を記入するところ。

※また、図の中は厳密に言うとMainメソッドである。

その他:
〇インターフェースは抽象的なクラス(具体的な処理/実装を持たない)ということも一応読んだ[^2]が、実践したことなく、まだ充分に理解できてないと思うため、現段階ではアウトプットしないことにした。
[^2]:『2週間でJava SE Bronzeの基礎が学べる本』p.436

〇フィールドはクラス

元記事を表示

Javaの::ってなんだ?

## こんな意味らしい???
メソッド参照の構文
|対象 |構文 |
|—————|——————-|
|クラスメソッド |クラス名::メソッド名 |
|インスタンスメソッド|オブジェクト変数::メソッド名|
|コンストラクター |クラス名::new |

## メソッド参照の基本
MethodRefUse.java
“`
package com.company;

public class MethodRefUse {
// 配列の要素の処理方法をメソッド参照で受け取れるように
public void walkArray(String[] data, Output output) {
for (var value : data) {
output.print(value);
}
}

// Output型に対応したメソッド(渡された文字列をブラケットでくくる)

元記事を表示

Javaのラムダ式とは?

## メソッド参照/ラムダ式
Java8では、メソッドも型の一種だそうです。メソッドそのものもまた、他の数値型や文字列型と同じく、別のメソッドの引数として渡すことができます。そして、メソッドを受け渡しするための構文が、メソッド参照であり、ラムダ式です。

## ラムダ式の基本
Main.java
“`
package com.company;

public class Main {
public static void main(String[] args) {
var data = new String[] { “春はあけぼの”, “夏は夜”, “秋は夕暮れ” };
var ml = new MethodLambda();
ml.walkArray(data, (String value) -> {
System.out.printf(“[%s]\n”, value); // Macでは\nと書かないと改行されない!、Windowsは¥n
});
}
}
“`
MethodLambda

元記事を表示

Javaのマップとは?

## マップ
マップは、一意のキーと値のペアで管理されるデータ構造です。言語によっては、ディクショナリ(辞書)、ハッシュ、連想配列と呼ぶ。
キーという意味ある情報できる点が、マップの特徴です。

## 先ずは書いてみましょう…
Main.java
“`
package com.company;

import java.util.HashMap;
import java.util.Map;

public class Main {
public static void main(String[] args) {
var map = new HashMap(Map.of(“Rose”, “バラ”,
“Sunflower”, “ひまわり”, “Morning Glory”, “あさがお”));
// 指定のキーが含まれているかを検索
System.out.println(map.containsKey(“Rose”)); // 結果 : true
/

元記事を表示

コレクションフレームワークとは?

## コレクションとは?
モノ(オブジェクト)の集合を表す仕組みです。
javaでは、数多くのコレクションの構造、操作の手段(=アルゴリズム)を、標準ライブラリ(java.utilパッケージ)として提供されているそうです。
java.utilパッケージは、コレクションを扱うための汎用的なクラス/インターフェイスの集合です。これを総称して、コレクションフレームワークと呼ぶそうです。
## よく聞くインターフェイスとは何か?
「インターフェース」は、コンピューター業界やIT業界でよく使われる言葉です。英語の「Interface」が語源となっています。

英単語の「Interface」の直訳は「境界面」「接点」であり、ビジネス用語の「インターフェース」はここから「異なる2つのものを仲介する」という意味で使われます。

コンピューター関連の用語として、「異なる2つの機器を仲介する」という意味のIT用語として使用されるケースが多いので、コンピューター業界やIT業界で働いている人にとっては、なじみのあるビジネス用語かもしれませんね。

## コレクションの基本構文
コレクションは、一般的に以下の構

元記事を表示

【 『dokojava卒業』vs codeでJavaを使う (Mac OS) 】

現在書籍でJavaを学習中です。
書籍はdokojavaというwebサービスを用いて学習していくのですが、
慣れてきたら自身のPCに開発環境を構築することが推奨されていたので、
今回実際に導入してvs code上でJavaを使用できるようにしようと思います。
(⚠︎僕のPCには既にvs codeはインストール済みです)

## JDKのインストール
JDKとは`Java Development Kit`の略称で、javaで開発をするためのプログラムのセットです。
JDKにはさまざまな種類があるそうですが、今回は`Amazon Corretto`というものをインストールしていこうと思います。

### ■手順

①Amazon Correttoを検索
②AWSサイト内にある、`Amazon Corretto 17`をダウンロードします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2165178/1e7588fd-ce69-445c-587d-70e2e68aad05.png)
③今回は

元記事を表示

Javaのループ制御について学んでみる

## ループの制御
while/do…while, for/拡張for命令ではあらかじめ決められた修了条件を満たしたタイミングでループを修了します。しかし、処理によっては、(修了条件に関わらず)特定の条件を満たしたところで強制的にループを中断したい、あるいは、特定の周回だけをスキップしたいということもあるでしょう。
Javaでは、このような場合に備えていくつかのループ制御命令を用意しています。
## break命令
break命令は、現在のループ処理を強制的に中断する命令です。
具体例を見てみましょう。1~100の値を加算していき、合計値が1000を超えたところでループを脱出します。

Main.java
“`
package com.company;

public class Main {
public static void main(String[] args) {
int i;
int sum = 0;

for (i = 1; i <= 100; i++) { sum += i;

元記事を表示

M1 Mac Java (Updated 2022/03)

M1 Macにjavaをインストールした際の備忘録
個人的にM1 Macを購入したのでJDKをインストールするためのメモを残す。

参考リンク
https://qiita.com/kinoshitaken123/items/66c631099b4c8f98b3bf

JDK17から商用でも使えるそうなのでOracle版を使ってみようと思う。

JDK
OpenJDKのサイト
https://jdk.java.net/17/
![スクリーンショット 2022-03-13 13.05.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15258/59e4f888-4d49-5cea-9f72-44e89523a945.png)

java –version
tar xzvf openjdk-17.0.2_macos-aarch64_bin.tar.gz
ls -ll
sudo mv jdk-17.0.2.jdk /Library/Java/JavaVirtualMachines
java –versi

元記事を表示

JavaでAtCoder黄色になりました

青色になった時の記事は[こちら](https://qiita.com/sounansya/items/bd0c5d3e2fdb9256c953)

遭難者です。[ABC243](https://atcoder.jp/contests/abc243)でAtCoder黄色になったので記事を書くことにしました。
![スクリーンショット 2022-03-12 23.55.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1227863/5e80cec3-ba98-629b-106a-3cc37ed5e107.png)
気が向いたら精進するスタンスを取っているのでレートのグラフがかなり歪です。

# 自己紹介

現在高専2年の、情報系の学生です。
数学が好きです。文字列が苦手です。

# 精進量

![スクリーンショット 2022-03-13 0.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1227863/d7a4

元記事を表示

コンピュータとオセロ対戦46 ~モデルの保存とロード~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/54c91a2ba0f5606d54b9)

# 今回の目標
ネットワークモデルの保存・ロードができるようにする。
# ここから本編

## 現在のディレクトリ構成
バージョン情報追加。

“`
MyNet
├── META-INF
└── org
└── MyNet
├── costFunction
├── layer
├── matrix
├── network
├── nodes
│   └── activationFunction
├── optimizer
├── version
└── module-info.java
“`

## バージョン情報
バージョン情報のみを保持するクラスを作成。
MANIFEST.MFでバージョン情報を保

元記事を表示

JavaでPowerPointドキュメントの背景色と背景画像を設定する方法

PowerPointドキュメントを作成する場合、ドキュメントをより美しく見せるために、通常、人々はドキュメントの背景色また背景画像を設定します。この記事では、無料のJava PowerPointコンポーネントである[Free Spire.Presentation for Java](https://www.e-iceblue.com/Download/presentation-for-java-free.html)を使用して、JavaアプリケーションでPowerPointの単色の背景色、グラデーションの背景色、背景画像を設定する方法を紹介します。

## 単色またはグラデーションの背景色を設定する

“`
import com.spire.presentation.*;
import com.spire.presentation.drawing.BackgroundType;
import com.spire.presentation.drawing.FillFormatType;

import java.awt.*;

public class Background {

元記事を表示

Javaでブラックジャックを作成してみた(betあり, splitあり, double downあり, 8デック)_ソース編

# はじめに(概要編と同じ内容)
コンソールで遊ぶブラックジャックです。

Qiitaで参考になる記事を検索しました。hit,stay(stand)のみの記事はいっぱいあったのですが、
以下内容のブラックジャック記事は見つけきれませんでした。多分まだ無いです。
 -> ブラックジャックで検索すると186件ぐらいあったのに。。(2022/03/06現在の情報)

ルールは下記のとおりです。

|項目 |内容 |補足 |
|—|—|—|
|デッキ数 |8デッキ(計416枚) |1デッキ=52枚(1~13のトランプ、ジョーカー抜き)|
|カードのシャッフルタイミング |総数の50%を消費した場合 |ゲーム途中の交換は不自然なため、交換タイミングはゲームの切れ目|
|ベッティング| あり|ベットベルの種類 -> 1~1000(ベル)|
|ディーラーの行動原則 |17以上になるまでhit|-|
|プレイヤーのできる行動 |hit, stand, double down, split|-|
|double down|最初の行動でのみ選択可能 |-|
|double down後 |追加は

元記事を表示

Javaでブラックジャックを作成してみた(betあり, splitあり, double downあり, 8デック)_概要編

# はじめに(ソース編と同じ内容)
コンソールで遊ぶブラックジャックです。

Qiitaで参考になる記事を検索しました。hit,stay(stand)のみの記事はいっぱいあったのですが、
以下内容のブラックジャック記事は見つけきれませんでした。多分まだ無いです。
 -> ブラックジャックで検索すると186件ぐらいあったのに。。(2022/03/06現在の情報)

ルール内容は、以下の通りです。

|項目 |内容 |補足 |
|—|—|—|
|デッキ数 |8デッキ(計416枚) |1デッキ=52枚(1~13のトランプ、ジョーカー抜き)|
|カードのシャッフルタイミング |総数の50%を消費した場合 |ゲーム途中の交換は不自然なため、交換タイミングはゲームの切れ目|
|ベッティング| あり|ベットベルの種類 -> 1~1000(ベル)|
|ディーラーの行動原則 |17以上になるまでhit|-|
|プレイヤーのできる行動 |hit, stand, double down, split|-|
|double down|最初の行動でのみ選択可能 |-|
|double down後 |

元記事を表示

Java GUIの歴史と選択

Java言語でデスクトップアプリを開発するとき、GUI開発フレームワークの選択肢は以下の3つがあった。

* AWT(Abstract Windowing Toolkit)
* Swing
* JavaFX

どちらを選ぶべきか迷っていたので、Java GUIの歴史を調べ、選択するための情報をまとめてみた。

## GUIの歴史

|年|GUIの出来事|
|—|—|
|1996|JDK1.0リリース。AWTは標準APIの一部として含まれる。|
|1996|Netscape社はIFC(Internet Foundation Classes)と呼ばれるGUIライブラリを開発。|
|1997|Sun Microsystems社とNetscape社は、IFCと他の技術を組み合わせ、Java Foundation Classesを形成する意向を発表した。コードネームはSwing。|
|1998|JDK1.2リリース。Swingは標準APIの一部として含まれる。|
|2007|JavaOneでJavaFXが公表された。Adobe Flex、Microsoft Silverlightに続い

元記事を表示

Eclipseでローカル変数の参照、宣言箇所を確認する

ひとの書いたコード読んでいて、ローカル変数多くてわからない!たすけてEclipseもん!ってなった。

対象の変数にカーソルを合わせた状態で
* 宣言箇所 `Ctrl+G`
* 参照箇所 `Ctrl+Shift+G`

を行うことでビューが開いて結果が表示されます。

さらに「次へ(`Ctrl+,`)」「前へ(`Ctrl+.`)」で移動もできます。
決まったら`Enter`でそこにジャンプ。

なおローカル変数だけでなく、他クラス含めたメンバーなどにも使えるようす。
そういうときは`Ctrl+Alt+H`使っちゃうけどどう違うんだろう。

元記事を表示

Selenium備忘録

メモせずにいつも同じことを調べてしまうので、備忘的に随時追記。

### 個別のブラウザモジュール(Chromium)を指定
Chromiumのexeファイルを以下のように指定すれば可能。
~~~java
ChromeOptions options = new ChromeOptions();
// Chromiumを指定
options.setBinary(“./lib/chromium-win/chrome.exe”);
~~~
### ブラウザの枠外にある要素を枠内に持ってくる
javascriptで。scrollIntoViewのパラメータ:falseで下寄せ、trueで上寄せ。targetXpathは対象要素のXpath。
~~~java
((JavascriptExecutor) driver).executeScript(“arguments[0].scrollIntoView(false);”, driver.findElement(By.xpath(targetXpath)));
~~~

### 新しいタブを開いてリンクを開く
targetXpathは対象リンクのX

元記事を表示

言語やライブラリによってcapitalizeの振る舞いが異なる

## Java
– 2文字目以降の大文字は大文字のまま
– [org.apache.commons.lang3.StringUtils.capitalize](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#capitalize-java.lang.String-)
“`java
StringUtils.capitalize(“cAt”) = “CAt”
“`
## JavaScript
– 2文字目以降の大文字は小文字になる
– [lodash.capitalize](https://lodash.com/docs/4.17.15#capitalize)

“`javascript
_.capitalize(‘FRED’);
// => ‘Fred’
“`

元記事を表示

OTHERカテゴリの最新記事