Java

【もし型がなかったら何がおこるか】ジェネリクス#1

もし型がなかったら

Javaでは変数を用いる時、必ず型(type)を指定します。変数には、その指定した型の情報(数値やインスタンス)しか格納することができません。int型の変数には、int型の変数だけが格納できます。

つまり、

型とは、「格納するデータに制約をかける仕組み」

と言うことです。

多様性(ポリモーフィズム)

子クラスは親クラスの型に格納することができる。
Objectクラスは、全てのクラスの親クラスなので全てのクラスを格納することができる

public class Main(){

    public static void prints(Object a, Object b){
        for(int i=0; i < (Integer)b; i++){
        System.out.println(a);
        }
    }

    public static void main(){
    object s = "Hello";
    s = new Hero();
    
    Object n = 1;
    prints(s, n);
    }

}

上のプログラムは、問題なく動作します。ただし、prints()メソッドでsとnを入れ替えてもコンパイルエラーは起きません。この場合は、実行するまでエラーが起きないために、超重要なシステムを作成した場合は、実行するまでエラーがわからないのは問題です。なので、「変数に予期しない種類の情報が入ってしまうことを未然に防ぐ安全装置」として、型を持っています

むやみに、多様性を用いると実行時までエラーがわからない

静的型付けと動的型付け

静的型付け(static typing)・・・javaのようにコンパイル時に型を決定し、型安全を積極的に活用していく言語の方針のこと

動的型付け(dynamic typing)・・・スクリプト言語のようにコンパイル時に型をチェックを行わない言語の方針のこと

ジェネリクスで何ができるか??

型を抽象化してコードの再利用性を向上させつつ、静的型付け言語の持つ型安全性を維持できます。もっと具体的に言うと、クラス宣言時に使用される型を曖昧に定義することでクラスを汎用的に使えるようにします。型はインスタンス化する時に型を決定します。

具体的なコードに関しては
次の記事をご覧ください!!

<デバックをコンパイルにやらせる>←これ ジェネリクス#2ジェネリクスとは?? ジェネリクスが必要な理由などは次の記事がご覧ください https://tomostudyblog....