![見出し画像](https://assets.st-note.com/production/uploads/images/67766934/rectangle_large_type_2_6d9d16cb717a279d713a324c2d2c8ca7.png?width=800)
【Console Application】基本文法 6【学習記】
言語仕様とかそういう手合の話🤤
Q.
Java では型混在は無理だよね?
A.
調べた限りでは素直には無理っぽい🙄
→プログラムエラーの殆どは誤(略
→ Any とか使うくらいなら型固定で頑張ろう🤪
#Java
#HashMap #総称型 #Generics #型推論
#学習記
// 基準コード
// JavaScript
let b = true;
let n = 0;
let s = "string";
let a = [false,1,"2"];
let h = {key0:true,key1:-1,key3:"hash"};
//
console.log(`b : ${b}\n`);
console.log(`n : ${n}\n`);
console.log(`s : ${s}\n`);
for(let i=0 ; i<a.length ; i++) // (i in a) では順番が保証されない
{
console.log(`a [${("0"+i).slice(-2)}] : ${a[i]}\n`);
}
for(let i in h)
{
console.log(`h [${i}] : ${h[i]}\n`);
}
【 Java 編】変数を参照したり配列から取り出したり
さて… Java の番だけど、型不明は実現できるのかな…?🤔
// Java
boolean b = true;
imt n = 0; // 32bit。時代のせいもあるけど long で倍精度の型が使える
String s = "string"; // Java ではプリミティブではないっぽい
int[] a = {0,1,2}; // 初期化の集合が波括弧
Map<String:Integer> h = new HashMap<>()
{{
put("key0",1);
put("key1",-1);
put("key3",0);
}};
クラス Any
https://docs.oracle.com/javase/jp/6/api/org/omg/CORBA/Any.html
なんか Any というクラスが有るようだけど "java any" で引いてこの資料以外であんまり現れないところを見ると、目的のものでは無い…のかな?🤔
…
…
…
IT 業界ではこういう型があやふやな物を何と呼んでるんだろ…?
"java 配列 不定の型" とかで探すとなぜか可変長配列の話しか出てこない…🙄
【Java入門】ジェネリクス(Generics・総称型)の使い方
https://www.sejuku.net/blog/22699
………
これは C++ にあるテンプレート <T> と同じ使い方の物っぽい🤔
目的は「どの型にも分岐できる仕掛け」ではなく、「1つの宣言でどの型でも代入できる仕掛け」😞
これだと何が来るか判っているから結局固定の型を宣言するのと変わらないよね😞
…型推測とかで調べればいいのかな…?🤔
変数宣言で型推論を利用する
https://www.javadrive.jp/start/var/index9.html
………
これも代入しているのがリテラルなので型が固定できる、よって型宣言を省略可能、という手合っぽい😞
Java では仕掛けが無いのかな…そういう事ができるクラス(Any?)を使うしかないのだろうか…?
ジェネリック型配列は作れるか?
https://blog.j5ik2o.me/entry/20091025/1256481422
似た感じの事を考える人は要るようだけど目的とはちょっと違う…😞
…
…
…
うん、できなそう☺️
早々に諦めて固定で進む
🙄🙄🙄
なんか変数宣言・初期化だけなのにこのエラー数😞
10行なんて int どころか imt になってるし🤪
Map とか、素で使えなくてびっくり🙄
結構難しい実装なのかなって思った🤔
Java の連想配列は基本機能によるものではない感じが凄い😞
とても古臭いクラスの関数呼び出しによって全て力技で解決!ってやりかたっぽい🤪
こういう制約が無くせず不自由なままなのは COBOL にも感じた事が有って、こういう「古臭くてなんか不便だな」というものを「レガシー」と呼ぶのだろうなと思った回だった🤤
次回は
Kotlin は、果たして型混在が有るだろうか…?🤔
この記事が気に入ったらサポートをしてみませんか?