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

JAVA関連のことを調べてみた2020年07月30日
目次

【備忘】Amazon DynamoDBへのアクセスプログラム

Amazon DynamoDBにアクセスするための基本的なプログラムを記載

1.Entityの用意

“`
@DynamoDBTable(tableName = “テーブル名”)
public class SampleTableEntity {
// HashKey
@DynamoDBHashKey
private String hashKey;

// RangeKey
@DynamoDBRangeKey
private String rangeKey;

// 項目
@DynamoDBAttribute
private String item;
}
“`

2.接続

“`
// 指定リージョンのDynamoDBにアクセスするためのClient生成
AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.standard()
.withRegion(リージョン名)
.build();

// テーブルへのMapperを生成

元記事を表示

Java8以降のNullPointException 対策例(Optional)

## 本稿について
Java8でNullPointerException の対策で新しいやり方が見つかっていますので自身の備忘的に書いておきます。

## 事象
早速ぬるぽ出してみます。

“`java:java

public class Test {
public static void main(String[] args) {
String str = null;
System.out.print(str.length());
}
}
“`

“`java:処理結果
Exception in thread “main” java.lang.NullPointerException
at Test.main(Test.java:6)
“`
NullPointerExceptionが出てしまいました。
java8より実装された対処法として、Optional をつけてあげることで
NullPointer対処することができます。
下記のイメージで変更します。

“`java:パターン1
import java.util.Optional;

public c

元記事を表示

int定数の代わりにenumを使用する

###int enumパターン
表現力が乏しい。
オレンジを期待しているメソッドにアップルを渡すしたり
アップルとオレンジを==演算子で比較してもコンパイラに怒られない。

““java
public static final int APPLE_FUJI = 0;
public static final int APPLE_PIPIN = 1;
public static final int APPLE_GRANNY_SMITH = 2;

public static final int ORANGE_NAVEL = 0;
public static final int ORANGE_TEMPLE = 1;
public static final int ORANGE_BLOOD = 2;

““

###enumを使用した場合

““java
public enum Apple {FUJI, PIPIN, GRANNY_SMITH}
public enum Orange {NAVEL, TEMPLE, BLOOD}
““

###値によって切り替えるenum型
以下

元記事を表示

タグ付きクラスよりクラス階層を選ぶ

###タグ付きクラス

““java

public class Figure {

enum Shape {RECTANGLE, CIRCLE};

final Shape shape;

// shapeがRECTANGLEである場合にだけこれらのフィールドは使われる
double length;
double width;

// shapeがCIRCLEである場合にだけこのフィールドは使われる
double radius;

// 円のコンストラクタ
Figure(double radius) {
shape = Shape.CIRCLE;
this.radius = radius;
}

// 長方形のコンストラクタ
Figure(double length, double width) {
shape = Shape.RECTANGLE;
this.length = length;
this.width = width;
}

double area() {
switch (shape) {
case RECTAN

元記事を表示

【StreamAPIとラムダ式】何でもできるスーパーマン登場!!

java経験者のOさんはこう言った…
Streamとラムダ式でなんでも1行で書くことができる…と。

もちろん、**基礎ができた後にやるのを忘れずに**。

#【Streamとラムダ式】サンプルコード
“`java
public class TestStarter {

public static void main(String[] args){

String[] s = {“1″,”2″,”3”};
//中間操作はなんでもしてくれるスーパーマン かつ 1度に条件をなんでもかける
Arrays.asList(s).stream().filter(i -> i.equals(“1”)).forEach(System.out::println);

}
}
“`

これは、
>❶.fillerで「true,false」なら何でも条件を設定できる(メソッドも参照可)
❷.forEachはfor文をぶん回し全部出力してくれる
❸System.out::printlnってのもラムダ式の書き方

他にも.mapと

元記事を表示

【探索アルゴリズム】ハッシュ探索法

##【探索アルゴリズム】ハッシュ探索法
・ハッシュ探索法は、データを探す探索アルゴリズムの1つ
・探索しやすいようにあらかじめ関数を用いてデータを格納しておく
・格納するのに使った関数を用いて、一発でデータを探索する

##他の探索アルゴリズムとの違い
・これまでの線形探索法や二分探索法では、何のデータがどこの要素に入ってるかは全くわからない状態から探索を始める、というのが前提条件であった。
・ハッシュ探索法は、データの「中身」と格納先の「要素」をあらかじめ紐づけしておくおkとで、ごく短時間に探索できるように工夫したアルゴリズム。

“`java
import java.util.Arrays;

/**
* ハッシュ探索法のアルゴリズム
*/
public class Algorithm {
public static void main(String[] args) {
int[] arrayD = {12, 25, 36, 20, 30, 8, 42};
int[] arrayH = new int[11];
Arra

元記事を表示

*Android*ピンチイン・ピンチアウトを検知する

#はじめに
こんにちは.今回は,Androidでピンチ操作を検知しようと思います.ピンチイン・ピンチアウトを判別する方法について解説します.

#前提
開発環境は以下の通りです.
*Android Studio 4.0.1
*targetSdkVersion 28
*Google Nexus 5x

#ピンチイン・ピンチアウトの判別
ピンチ操作の検知には,“`ScaleGestureDetector“`を使用します.第一引数にContext,第二引数には,“`OnScaleGestureListener“`インタフェースを実装したクラスのオブジェクトを指定します.今回は,匿名クラスを使用して,インタフェースを実装します.

“`java
this.scaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.OnScaleGestureListener() {
// ピンチ操作中に繰り返し呼ばれる
@Override
public boolean onSca

元記事を表示

【総集編】7月ふりかえり

# はじめに

今月のふりかえりです。
月1で振り返り
今後は何を勉強するかを決めます。

——————————–
# 7月 1週目

2020/07/01 [【統計学】ふつうのエンジニアが統計学の勉強を始めてみた](https://qiita.com/ymd65536/items/dc0eff97e8fe86ac2c1d)

2020/07/05 [【統計学】ふつうのエンジニアが統計学の勉強を始めてみた- part2](https://qiita.com/ymd65536/items/9dc84ccef5138f64d129)

——————————–
# 7月 2週目

2020/07/08 [【キニナル話】jexcel使ってみた.xlsx](https://qiita.com/ymd65536/items/a05888bf563bf60ad161)

2020/07/12 [JavaとJavaScript 間違えられやすい問題](https://qiita.com/ymd65536/i

元記事を表示

【Java】スーパークラス/サブクラスのコンストラクタあれこれ

#目次
– はじめに
– 前提知識
– 継承クラスについて
– コンストラクタ
– 今回のキモ
– 暗黙的なコンストラクタ実行
– おわりに

##はじめに
どうも駆け出しエンジニアです。
先日会社でコーディングをしていた際に人の書いたコードの続きを書かなくちゃいけなくなったんですが、
その時にクラスの継承,コンストラクタでドツボにはまってしまいかなりの時間を使ってしまいまして….
もう一回頭から学習しなおした所、わからないことがボロボロ出てきてヒドかったので再度まとめることにしました。

なお、本記事は
 ・「現在Javaを触っている人」
 ・「もう一度内容を復習したい人」
向けとなっております。
各クラス名/変数名は適宜読み替えてください。

##前提知識
#####継承クラスについて
– 継承クラス=新しいクラスを作るとき、以前作った機能と共通する部分を引き継ぐクラス
– 継承元のクラスのことを「親クラス」、継承先のクラスのことを「子クラス」と呼ぶ。
– 同意義で「スーパークラス」「サブクラス」とも呼ぶ
※本記事ではスーパー/サブ

元記事を表示

Apache Camel のroute構築で用いる Java DSL の個人的なコーディング規約

Apache Camel では「route」を作成する際、用意されたメソッドをひたすら繋げるという[独自のDSL](https://camel.apache.org/manual/latest/java-dsl.html)で書く。このDSLは**条件分岐**や**ループ**などにも対応している。

ただ、Javaのスタイルガイドに従って書くと、条件分岐やループの内部処理を作るメソッドも同じインデントになってしまい、DSLとして非常に読みづらい。なので**自前でインデントを追加した方が良い**と考えられる。

* [公式ページのサンプル(choice)](https://camel.apache.org/components/latest/eips/choice-eip.html)
* [camel-idea-pluginのissue](https://github.com/camel-tooling/camel-idea-plugin/issues/309)
* [stack overflow](http://stackoverflow.com/questions/46572048)

元記事を表示

【Java入門】クラスについて(クラスの定義、インスタンス化、コンストラクタ)

#目的

Java言語を含めたプログラミングの学習を始めたばかりの方、既学習者の方は復習用に、
今回は**クラス**について学ぶために書いています。

[【Java入門目次】](https://qiita.com/morioheisei/items/6c7fc063c26e63d890ac)
・[変数と型](https://qiita.com/morioheisei/items/3d27e82d6cd88068dded)
・[型変換](https://qiita.com/morioheisei/items/28ab5fd69570e01cd317)
・[変数のスコープ](https://qiita.com/morioheisei/items/c56ab32b68ce92d32206)
・[文字列の操作](https://qiita.com/morioheisei/items/e58adadd8535971b69be)
・[配列の操作](https://qiita.com/morioheisei/items/b6acbb1b0c07b40e7f56)
・[演算子](https://qi

元記事を表示

Kotlinから使えないJavaコード(社内勉強会用)

– 概要
– 業務でハマった問題について発表します
– 実際のところ私もよく分ってないので、ぜひ分かる方はコメント下さい
– 前提
– Android Kotlin/JVMで、Java製のLibraryをKotlinから利用

# 実際にハマったコード

“`java:Desk.java
package library_package;

abstract class BaseDesk {
public enum Color { BLUE, ORANGE }
}

public class Desk extends BaseDesk {
private Color color;

public Desk(Color color) {
this.color = color;
}
}
“`

こういうJava実装を、Javaから使うのは、当然うまくいく。

“`java:java
new Desk(Desk.Color.BLUE);
“`

Kotlinから使うと、Compile Errorになる。

元記事を表示

51歳(現52)からのプログラミング 備忘 VScodeでjava.awt javax.swing // Java 11 or more recent is required to run

VScodeでjavaを復習してたんだけれど
JFrameの挙動を確認しようとしたら

VScode「vscode Java 11 or more recent is required to run…」

私「うーむ」

#VScodeでjava.awt javax.swing をimportする
僕の場合には、eclipseで使ってるjdkがver8なので、VScodeもver8で揃えたいのが前提

1. windows側の環境設定で jdk 8のパスを指定(省略)
2. VScode側のsettings.jsonで2項目を指定
3. VScode側のLanguage Suport for javaのバージョン変更

をやってきます

なお、このエラーには、2020-9月のJDK更新時と、それにVScodeが対応した時に修正されるのかな?なので、この記事はそれまでの限定記事。

##2.setting.json
java.homeでjdkの指定
java.configuration.runtimesでjdkの指定

“`
“java.home”: “C:\\Progra

元記事を表示

【java】java初学者の僕は感じた。「なんでString型だけ最初の文字が大文字なん?」String型と向き合ってみた。

# はじめに
javaシルバーの資格取得に向けて学習を進めていく中で、String型の扱いについて理解を深めるために学習した内容のメモです。
解釈に誤りがあれば指摘いただければ幸いです。

# String型は参照型であって基本データ型ではないようだ

変数を定義する際に、`int`とか`double`とか`boolean`とか`char`とかデータ型を指定して、変数を定義してました。
同じように文字列を扱う変数を定義する時も、`String`型を指定して変数を定義する事はわりと当たり前のようにやってました。

こんな感じ↓

“`変数の定義.java
int i = 100
// -> 整数を扱えるint型に整数100を代入
char c = ‘あ’
/* -> 文字を扱えるchar型に`あ`を代入
char型の場合はダブルクォーテーションではなくてシングルクォーテーション*/
double d = 10.0
// -> 小数点を扱える「浮動小数点数型」に10.0を代入
String s = “文字列です。”
/* -> 文字列を扱えるString型に”文字列です。”を代

元記事を表示

h:selectOneRadioのラジをボタンでいろいろやってみる

– 環境
– CentOS Linux release 7.8.2003 (Core)
– Payara Server 5.194
– Eclipse IDE for Enterprise Java Developers.Version: 2020-03 (4.15.0)
– JSF 2.3.9

# 選択肢を設定してみる
– 選択肢を格納する便利クラスとして[SelectItem](https://docs.oracle.com/javaee/7/api/javax/faces/model/SelectItem.html)がある

|選択肢の数|タグ|SelectItem|
|:-:|:-:|:-:|
|1つ|f:selectItem|使わない|
|1つ|f:selectItem|使う|
|複数|f:selectItems|使う|
![スクリーンショット 2020-07-28 22.18.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/f85fe5dd

元記事を表示

Burp Suiteの拡張機能を作り方メモ

(ほぼ)日課のQiita記事の投稿です。
毎日書くの結構難しいから、今後平日は興味のある情報のURLまとめるとかの方がいいかも・・・

とりあえず今回は、Burp Suiteの拡張機能を作成し始めた頃に調べた情報をまとめました。
Burpのインストールや使用方法については割愛します。

今回は以下を参考にさせていただきました。

* [SSTtechlog 09 Burp拡張の作成に挑戦! | SST 株式会社セキュアスカイ・テクノロジー](https://www.securesky-tech.com/column/techlog/09.html)
* [Burp Suite拡張を作ろう | MBSD Blog](https://www.mbsd.jp/blog/20160914.html)
* [Burp Suite拡張プラグイン作成入門 その1 – Hello world編 – まったり技術ブログ](https://blog.motikan2010.com/entry/2018/02/11/Burp_Suite%E3%81%AE%E6%8B%A1%E5%BC%B5%E3%82%92

元記事を表示

Spring Boot + Springfox springfox-boot-starter 3.0.0つかう

https://github.com/springfox/springfox をつかう。

“`gradle:build.gradle
plugins {
id ‘org.springframework.boot’ version ‘2.3.2.RELEASE’
id ‘io.spring.dependency-management’ version ‘1.0.9.RELEASE’
id ‘java’
}
group = ‘com.example’
version = ‘0.0.1-SNAPSHOT’
sourceCompatibility = ’11’
repositories {
mavenCentral()
}
dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-web’
developmentOnly ‘org.springframework.boot:spring-boot-devtools’
testImplementation(‘org.spr

元記事を表示

20代後半で5年間培ったCOBOLから、Web系言語にスキルチェンジした話

こんにちは!Qiita初投稿の(@k_eng_m)と申します。
以下、簡単な自己紹介となります。

– 東京都生まれの28歳
– 文系出身でエンジニア歴約6年
– SIer企業でCOBOL 5年(要件定義から全工程を経験)
– SES企業でJava 1年

キャリアのほとんどはCOBOLを使用した、いわゆるホスト系、企業の基幹システムの開発・保守に携わってきました。
現在はSES企業にてJavaを中心に、JavaScript(vue.js)、AWSなんかを触らせていただいています。

スキルチェンジを経て約1年が経過しましたので、
今日はこの**COBOLの経験を経て、未経験でWeb系言語に転向した話**を、記事として残しておくこととします。

全くの未経験というよりは、エンジニア経験はあるものの
**『VBやCOBOL等のレガシー言語をやってたけど、スキルチェンジは可能なのか』**
**『これまでの経験は、スキルチェンジ後に役に立つのか』**
**『○○歳からじゃもう遅いのではないか』**
といったことを考えていらっしゃる方、
またこれから先、スキルチェンジを伴う転職

元記事を表示

【Java入門】繰り返し処理について(while、do-while、for、拡張for、break、continue)

#目的

Java言語を含めたプログラミングの学習を始めたばかりの方、既学習者の方は復習用に、
今回は**繰り返し処理、繰り返し制御文**について学ぶために書いています。

[【Java入門目次】](https://qiita.com/morioheisei/items/6c7fc063c26e63d890ac)
・[変数と型](https://qiita.com/morioheisei/items/3d27e82d6cd88068dded)
・[型変換](https://qiita.com/morioheisei/items/28ab5fd69570e01cd317)
・[変数のスコープ](https://qiita.com/morioheisei/items/c56ab32b68ce92d32206)
・[文字列の操作](https://qiita.com/morioheisei/items/e58adadd8535971b69be)
・[配列の操作](https://qiita.com/morioheisei/items/b6acbb1b0c07b40e7f56)
・[演算子]

元記事を表示

Spring振り返り メモ

## はじめに
「Spring Framework 徹底入門」を読み返すにあたって、各章の見出しを書き出したもの。

詳細は↓ の書籍を参照

  • OTHERカテゴリの最新記事