' P '

whatever I will forget

Java Primitive TypeのArrayList

昔にArrayListのメモ書いたけど

mankozooyork.hatenablog.com

この時はintとかでArrayListは作れませーん!(ドヤ顔)みたいな感じでしたけど
実は作れましたってお話です
Autoboxing / Unboxingとも言うようです

Autoboxing

基本はsetみたいな意味合い
class化させたprimitive type変数に.valueOf()
明示的に書かなくてもコンパイル時に追加してくれる

Unboxing

基本はgetみたいな意味合い
class化させたprimitive type変数に.intValue()
.intValue() とかdoubleValue()とか
明示的に書かなくてもコンパイル時に追加してくれる

複雑バージョン

java.util.ArrayList;

public class Main {
    public static void main (String[] args) {
//         ArrayList<int> intArray = new ArrayList<int>();  -> これはエラー
         Integer integer = new Integer(10); // これはOK
         Double dbl = new Double(10.0); // これもOK

         ArrayList<Integer> intArray = new ArrayList<Integer>();  //作れる!
         ArrayList<Double> intArray = new ArrayList<Double>();  //作れる!

         for(int i = 0; i < 10; i++) {
             intArray.add(Integer.valueOf(i));  //valueOf() で int の値をセット(Autoboxing)
             System.out.println(intArray.get(i).intValue()); //intValue()で int の値をゲット (Unboxing)
         }
         
          // double は省略
}

簡単バージョン

java.util.ArrayList;

public class Main {
    public static void main (String[] args) {
//         ArrayList<int> intArray = new ArrayList<int>();  -> これはエラー
         Integer testint = 10; // コンパイル時はInteger.valueOf(10)をしている
         Double dbl = 10.0; // コンパイル時はDouble.valueOf(10.0)をしている
         int boxingInt = testint; //これもOK。testint.intValue()をしている

         ArrayList<Integer> intArray = new ArrayList<Integer>();  //作れる!
         ArrayList<Double> intArray = new ArrayList<Double>();  //作れる!

         for(int i = 0; i < 10; i++) {
             intArray.add(i);  //valueOf() いらない(Autoboxing)
             System.out.println(intArray.get(i)); //intValue()いらない (Unboxing)
         }
         
          // double は省略
}