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

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

【Java】switch文のcaseに文字列入れる場合は定数式にする必要がある

結構今さら感があると思うのだが、知らなかったので自分用のメモ。
すぐ忘れそうだが。

# こんな例はコンパイルエラーになります

例えば

“`java
public class SwitchTest {
static final String ddd = “ddd”;
static String ccc = “ccc”;
public static void main(String[] args) {

String bbb = “bbb”;

final String eee = “eee”;

switch(args[0]) {
case “aaa”:
System.out.println(“aaa”);
break;
case bbb:
System.out.println(“bbb”);
break;
c

元記事を表示

Java キャスト(型変換)でよく使うものをまとめる

キャストについて学習・実務でもよく使う(と思われる)ものを中心にまとめています。
# 数値型どうしのキャスト
## int型 → double型
“`ruby
int num = 3;
double number = (double)num;
“`
## double型 → int型
“`ruby
double num = 3;
int number = (int)num;
“`
数値型(他にlongなど)はキャストしたい変数の前に**(変換したい型)**をつけることで、キャストができる。

# 数値型から文字型へのキャスト
## int型 → String型
“`ruby
int num = 3;
String number = Integer.toString(num);
“`
## double型 → String型
“`ruby
double num = 3.0;
String number = Double.toString(num);
“`
# 文字型から数値型へのキャスト
## String型 → int型
“`ruby
String text = “1

元記事を表示

Javaのgetter/setterの定義を自動で作成

#この記事について
Javaにおいて、クラスのフィールドに対して、getter/setterは関数名も含めて定型的に定義できる部分があると思ったので、手動で入力しないでいいようにPython3でスクリプトを書いてみましたので紹介します。
※IDEの機能などを使えばあるのかもしれませんが練習がてら書いてみました

なお、getter/setterとしては最低限の機能だけを考えます。例えば「setterで不正値のチェックを行いたい」といった場合には手動で追加となります。

#環境(ざっくり)
言語:Python3
OS:macOS (たぶん他のOSでも大丈夫だと思います)

#やりたいこと:Javaでのgetter/setterの定義
例を通してやりたいことを説明します。

下記のように、魔法使いを表すWizardクラスがあり、フィールドとして名前を表すnameや魔力を表すpowerがあったとします。

“`java:Wizard.java
public class Wizard {
private String name;
private double power;

元記事を表示

[Java]MinecraftのModを作成しよう 1.16.1【基本ファイル】

(この記事は一連の解説記事の一つになります)

先頭記事:[入門編](https://qiita.com/koteko/items/8d32c8819e3f9e6a333a)
前の記事:[入門編](https://qiita.com/koteko/items/8d32c8819e3f9e6a333a)
次の記事:

# 基本ファイル
基本となるファイル類を設定していきます。[前回](https://qiita.com/koteko/items/8d32c8819e3f9e6a333a)でコピペしたファイル群があるので、これらを自分用に変更していきます。

## パッケージ名
[パッケージ命名規約](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8_(Java)#%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E5%91%BD%E5%90%8D%E8%A6%8F%E7%B4%84)を読むと、所持するドメインを名前空間として用いることで、競合を避

元記事を表示

クリーンアーキテクチャでブロック崩しゲームを設計・実装

# はじめに

クリーンアーキテクチャの勉強をしていまして、いろいろな設計・実装に挑戦しています。
題材に良さそうな記事があり、クリーンアーキテクチャを意識して再設計・再実装に挑戦してみました。
元記事のコメント欄に書いたのですが、せっかくなので設計の過程などを整理して記事にしておきます。
題材: [java簡素なブロック崩し作ってみた – Qiita]()

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29070/f1fab751-0f66-93a6-c402-684a0e66381c.png)

# 設計

ゲームプログラムは、登場物をクラスにできるので、クラス抽出はそんなに難しくないと思います。

* 登場物(Model): ゲームコート、壁、ブロック、ラケット、ボール
* 入力(Controller): マウス操作、キーボード操作
* 出力(View): ゲーム画面、スプラッシュ画面
* 処理(Logic): メイン処理、ゲーム処理

クラス図を以下に示します。
クリーンアーキ

元記事を表示

[Java]MinecraftのModを作成しよう 1.16.1【入門編】

# TL;DR
・ 以前 Minecraft 1.14.4 のmoddingについていくつか解説した
・ 今度は改めて Minecraft 1.16.1 のmoddingについてできるだけ色々解説していく
・ まずは環境構築について紹介

# はじめに
以前Minecraftのmoddingについていくつか記事を書きました。
[[Java]MinecraftのModを作成しよう 1.14.4【入門編】](https://qiita.com/koteko/items/7afadf8261eac49bacad) など
これらは本体のバージョンが1.14.4(2019年7月リリース)とやや古く、また1.16での追加要素が大規模であることから、今後の潮流を考慮するに1.14の理解をするよりも1.16の開拓をする方が有用だと思いました。
そのため、今回からは環境を変えて(変わらない部分は引き継ぎつつも)新たに解説を書いていこうと思います。
また、今回は例示用でなくもうすこし具体的にModをイメージして作っていこうと思っていますので、ご了承ください。

# 注意
必要に応じて解説及び注釈を入れてい

元記事を表示

【CodePipeline×ElasticBeanstalk】Java SEプラットフォームでランタイムバージョンをJava 8からCorretto 11に更新する

2020年6月3日に、Elastic BeanstalkのJava SEプラットフォームで、Corretto 11(Java 11)プラットフォームブランチの一般提供が開始されました。

– LTS(長期サポート)バージョンはJDK11
– Amazon CorrettoでもCorretto 8のサポート期限が最短2023年6月までなのに対し、Corretto 11は最短2024年8月までと長い

ことからも早めにランタイムバージョンの更新対応しておきたいこところですね。

というわけで、今回は、ElasticBeanstalkのJava SE環境をJava 8(Corretto 8ではないほう)からCorretto 11にバージョンアップする手順をまとめてみました。

## 環境
– OS:Windows10
– IDE:Eclipse 2020-03
– JDK:Amazon Correto 8 → Amazon Correto 11
– フレームワーク:Spring Boot
– AWS
– CodePipeline
– CodeCommit

元記事を表示

Template Methodパターン

###ざっくりTemplate Method
スーパークラスで処理の枠組みを定め、サブクラスでその具体的内容を定めるようなデザインパターンをTemplate Methodという。
登場役はAbstractClass(抽象クラス)の役とConcreteClass(具象クラス)の役の2役。

###AbstractClass(抽象クラス)の役
AbstractClass役はテンプレートメソッドを実装する。
また、そのテンプレートメソッドで使っている抽象メソッドを宣言する。

““java
package templateMethod;

public abstract class AbstractDisplay {
public abstract void open();
public abstract void print();
public abstract void close();

public final void display() {
open();
for(int i = 0; i < 5; i++) { print(); } clos

元記事を表示

JSFがさっぱりうまくいかないときに役立ちたいリンク集

|スコープアノテーション|バッキングBeanの寿命|
|:-:|:-:|
|@RequestScoped|一回の呼び出し(リクエスト)とそれへの応答(レスポンス)の間存続|
|@SessionScoped|HTTPセッションが続いている間(ログインしている間)存続|
|@ApplicationScoped|ウェブアプリケーションが実行されている間存続|
|@ConversationScoped|一回以上のリクエストの間で、開始と終了をプログラムで制御する|
|@Dependent|インジェクト先のスコープを引き継ぐ(予めスコープを決められない場合に使う)|
|@ViewScoped|リクエストにより表示されたJSFページが他のページへ切り替わる直前まで存続。画面をリロードしても存続。|

“`text:るーる
JavaEE7からのCDIビーンクラスの基本条件
a. 具象クラスであること
b. 引数なしのデフォルトコンストラクタを持つこと
c. static付きのインナークラスではないこと

JSFのaction属性に指定するメソッドのルール
a. publicであること
b. 引数

元記事を表示

FacesMessageを設定したのに表示されないときの対応方法

# 事象 : FacesMessageをコンテンツに設定したのにメッセージが表示されない

“`xml:ajaxでメソッドを実行して




“`

“`java:メソッドでメッセージをコンテンツに設定したのに表示されない
public void uploadFile(AjaxBehaviorEvent event) thr

元記事を表示

Eclipseのリファクタリングまとめ

Eclipse には様々なリファクタリング機能が備わっていますが,正直,実行するとどうなるのかよくわからないものが多かったのでまとめてみました.

# リファクタリングとは

リファクタリングとは、ソフトウェアの外部の振る舞いを保ったままで、内部の構造を改善していく作業を指します。

## リファクタリングを行う理由

### ソフトウェアの設計を改善する

完璧な設計は存在しません.厳密には設計当時は完璧に思えても時間経過とともに完璧ではなくなります.
さらに,今後どんな要望が出てきて,誰が,どこに機能追加することになるかは誰にも分かりません.

設計が完璧ではなくなる例

– 決済方法として現金,クレジットカードのみを考えていたが,他のキャッシュレス決済に対応する必要が出てきた
– 納期が短かったので,影響範囲を限定的にするために場当たり的な対応をした
– 新たに参画した人が,既存コードの理解が足らないままコードを追加し,スパゲッティコードになる

時間経過で設計が劣化していくので,定期的にメンテナンスしてやる必要があります.

### ソフトウェアを理解しやすくする

きれいに整

元記事を表示

f:ajaxでMethod not foundとなった時の対応方法

# 事象 : f:ajaxを動かそうとしたらコンソールにエラーが出て動かなかった

– 環境
– CentOS Linux release 7.8.2003 (Core)
– Eclipse IDE for Enterprise Java Developers.Version: 2020-03 (4.15.0)
– openjdk version “11.0.7” 2020-04-14 LTS
– JSF 2.3.9

“`bash:Eclipseのコンソールのログ
javax.el.MethodNotFoundException: /base.xhtml @17,113 listener=”#{uploadBean.uploadFile}”: Method not found: class brans.UploadBean.uploadFile(javax.faces.event.AjaxBehaviorEvent)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMeth

元記事を表示

Proxy環境で VS Code Remote Development + Java開発をさせてくれ

こん**は。

突然ですが、VS Code で しかも実行環境はコンテナで Java、開発したいですよね。
でも邪魔してくるやつが居ますよね。そう Proxy です。

社内Proxyの場合企業ごとに状況が異なると思いますが、うまくいった例としてすこしでもあなた様の参考になれば……。

# :muscle: モチベーション

– Proxy 環境下で Docker を利用した VS Code の Remote Development をしたい!
– いろんなレイヤからプロキシの設定を求められる……:japanese_ogre:
– プロキシに悩める人に、少しでもヒントとなれば!

# :computer: 動作確認環境(ホスト)

– OS
* Windows 10
– Docker
* Docker for Windows
– VS Code
* 1.46.0

# :hand_splayed: 前提

* VS Code と Docker for Windows がインストールされていること
* Docker for Windows のプロキシ設定は既に完了

元記事を表示

AWSサーバレスでSPARQLエンドポイントを構築(Apache Jena編)

AWSサーバレスでSPARQLエンドポイントの構築を試してみた第2弾です。
第1弾はこちらです。

AWSサーバレス環境でSPARQLエンドポイントを作ろうとしたが上手くいかなかった話
https://qiita.com/uedayou/items/bdf7a802e27fe330044e

前回は利用したライブラリの関係で検索速度に難があり限定した用途であれば使える、という感じでした。
今回はRDFストアとしては実績がある[Apache Jena](https://jena.apache.org/)を使ってみました。

## 環境

– [AWS Lambda](https://aws.amazon.com/jp/lambda/)
– [Amazon API Gateway](https://aws.amazon.com/jp/api-gateway/)

前回と同じくAWS Lambda+API Gatewayという構成です。
Apache Jena は

– [jena-core](https://jena.apache.org/documentation/rdf/index.h

元記事を表示

Spring Boot セッション属性(@SessionAttributes)の使い方

Spring Bootのセッションのやり方です。

#Formクラス

“`java:LoginForm.java
public class LoginForm implements Serializable {

@NotEmpty(message = “Enter Id”)
private String id;

@NotEmpty(message = “Enter Password”)
private String password;

private String check;
private String radio;
private String select;
//getter,setter省略
“`

#Controllerクラス

“`java:IndexController.java
@Controller
@RequestMapping(“/index”)
//@SessionAttributesは1つのController内で扱う複数のリクエスト間で
//データを共有する場合に有効。
//types属性にHTTPセッションに格納するオブジェ

元記事を表示

JPA Auditingとは

# JPA Auditingとは
JPAを使用してDomainをRDBSのテーブルにマッピングする際、共通的にDomainを持っているフィールドやカラムが存在します。

代表的には以下となります。

– CreateDate
– UpdateDate
– 識別子

のようなフィールドおよびカラムがありますよね。
Domainごとに存在するということはコードが重複されていることでしょう。
データベースを誰が、いつ作成したのかなど記録を残したほうがメンテナンスにも役に立つためです。
そのため、生成日、修正日のようなカラムは本当に重要なデータです。

それでJPAではAuditという機能を提供しています。Auditは監視するという意味でSpring Data JPAで時間に対して自動的に値を入れてくれる機能です。ドメインを永続性コンテキストに保存したり照会などを行ってからupdateを行う場合、毎回時間データを入力しなければならないのですが、auditを利用することで自動的に時間をマッピングしデータベースのテーブルに入れてくれます。

# 練習
1.domain package内にBase

元記事を表示

Java 変数に評価結果を代入

変数に評価結果を代入するコードがわかりづらかったので、頭を整理するためにまとめました。

## 変数に評価結果を代入
“`ruby:
int number = 1;
boolean flag = number == 1;

System.out.println(flag);
“`
この時表示される処理結果は
![スクリーンショット 2020-08-12 16.40.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687827/2feed6fe-aedb-060a-d741-6a1b6b86b509.png)
になる。
numberに「0」を入れた表示結果は「false」になるが、わかりづらかったので自分のために補足。
### boolean flag = number == 1;を分解
“`ruby:
/* numberが「1」なら、flagは「ture」*/
if(number == 1){
boolean flag = true;
}
/* numberが「0」な

元記事を表示

[spring]Spring Data JPAを使ってみよう

javaには触れた経験がありましたが、
フレームワークが盛り込まれたソースコードを見た時に
\(^o^)/<「なにこれー」となり、立ち止まる事が多かったのでメモ書き程度に。

# Spring Data JPA とはなんぞや
Javaで言うところの、**DAO**(Data Access Object)にあたるものが
Spring では、**Repositoryクラス**と呼ばれています。
※なぜそう呼ばれているのかは本稿では触れません

その**Repositoryクラス**を便利に(お手軽に)使えるようにするものが
**Spring Data JPA**というライブラリなのです。

## Spring Data JPA 使用例
早速ですが、以下のコードは「社員名を取得する」ためのコードです。

“`java:EmployeeRepository.java
@Service(“employeeService”)
public class EmployeeServiceImpl implements EmployeeService{
@Autowired
Emplo

元記事を表示

[Java]SpringBoot + Doma2 + H2

公式チュートリアルやってみた。
https://github.com/domaframework/doma-spring-boot

“`application.properties
doma.dialect=h2
“`

“`xml:pom.xml


com.h2database
h2
runtime



org.seasar.doma.boot
doma-spring-boot-starter
1.4.0


org.seasar.doma

元記事を表示

[Java]MinecraftのModを作成しよう 1.14.4【99. Modの出力】

(この記事は一連の解説記事の一つになります)

先頭記事:[入門編](https://qiita.com/koteko/items/7afadf8261eac49bacad)

# Modの出力
丹精込めて作ってきたModがいい感じになってきたならば、他の人が遊べるようにjarファイル(Java Archive)に出力してみましょう!

“`
D:\projects\mc_example_mod
 ├ src
 ├ build.gradle
 ├ gradlew
 ├ gradlew.bat
 └ gradle
   └ wrapper
     └ gradle-wrapper.jar
     └ gradle-wrapper.properties
“`
[入門編](https://qiita.com/koteko/items/7afadf8261eac49bacad)で同じようにセットアップしている場合、プロジェクトファイルはこのようになっていると思います。`build.gradle`を編集します。

“`gradle:build.gradle
buildscript {

元記事を表示

OTHERカテゴリの最新記事