聞いてよアカネチャン!
[俺] 良いこと思いつきました!
[ア] なんや?
[俺] 俺, アカネチャンの列挙型をつくります!
[ア] あ ほ く さ
[俺] ...
[俺] ええええええええええええええええええ(ry
※元ネタはこちら - 何でも言うことを聞いてくれるアカネチャン
キッカケは友人との会話
その場のノリで話してただけなので,詳しい経緯なんてものは覚えていません.
とりあえず『何でも言うことを聞いてくれるアカネチャンの返事はboolean型みたい』みたいな話をしたんだと思います.
理想は
if (Seyana) {
System.out.println("True!!")
}
ですが,Seyanaをboolean型の代わりとして直接使うことはできないので,できる範囲でやってみました.お遊びです,何のメリットもありません.
作るよアカネチャン!
アカネチャンのセリフ
アカネチャンのセリフは採用したもの以外は受け付けたくないので,列挙型(enum)にしてします.また,各セリフにboolean型を紐づけたいので,それも決めます.結果以下のようになりました.
- あほくさ(false)
- あれな(true)
- ええで(true)
- ええんちゃう?(true)
- ほんま(true)
- 知らんがな(false)
- 知らんけど(false)
- それな(true)
- そやな(true)
- わかる(true)
無理やりtrue/falseを決めた部分もありますが,まぁ良いでしょう.
実装
AkaneChan列挙型をつくります.この中に先ほどのセリフを入れ込みます.このとき,列挙型にもprivateなコンストラクタを持たせることで,インスタンスに固有の値を持たせることができるので,それを使いboolean型を紐付けます.また,せっかくなので日本語と英語それぞれの文章も紐づけておきます.
例として「あほくさ」と「あれな」を実装すると以下のようになります.
public enum AkaneChan {
Ahokusa(false, "Sounds stupid.", "あほくさ"),
Arena(true, "Exactly...", "あれな"),
;
private boolean agree;
private String meaning_en;
private String meaning_jp;
private AkaneChan(boolean agree, String meaning_en, String meaning_jp) {
this.agree = agree;
this.meaning_en = meaning_en;
this.meaning_jp = meaning_jp;
}
}
あとは,
-
isAgree()
-- agreeをreturnするメソッド -
getMeaning_en()
-- meaning_en(英語の意味)をreturnするメソッド -
getMeaning_jp()
-- meaning_jp(日本語の意味)をreturnするメソッド
を作ってあげれば完成です.
使うよアカネチャン!
とてもシンプルです.理想は〜の部分に書いたif文を再現します.
if (AkaneChan.Seyana.isAgree()) {
System.out.println("True!!");
} else {
// 呼ばれることはない
System.out.println("False!!");
}
結論
[俺] いらねぇよ!アカネチャン!!
[ア] せやなーそやなー知らんけどー(棒)
あとがき
先ほど実装したメソッドに加えて,ListenUpAkaneChan
メソッドを追加したAkaneChan列挙型と,いくつかの無駄なものをセットにしてGithubに公開しています.
Java8環境で作ってますが,固有の何かを使っているわけではないので,問題なく使えるかと思います.
/build のなかに,jarファイル化したアカネチャンや,実際にアカネチャンを使っているプログラムSampleAkaneChan.java
も入っているので,よろしければ...使わないか(笑)