Android/Java

[Java]  Generics

혀가 길지 않은 개발자 2020. 7. 24. 17:00

JamesClass.java

package com.jwsoft.javaproject;

public class JamesClass<J> {

    private J j;

    public void set(J j) {
        this.j = j;
    }

    public J get() {
        return this.j;
    }

}

 

 

 

 

 

MainActivity.java

package com.jwsoft.javaproject;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        JamesClass<String> james = new JamesClass<>();
        james.set("James Kim");
        Log.e("result : ", james.get());

    }
}

실행 결과

 

 

 

 

 

 

 


ConvertInterface.java

package com.jwsoft.javaproject;

public interface ConvertInterface<S, I> {
    I convertToInteger(S s);
    S convertToString(I i);
}

 

 

 

 

 

ConvertClass.java

package com.jwsoft.javaproject;

public class ConvertClass implements ConvertInterface<String, Integer> {

    @Override
    public Integer convertToInteger(String s) {
        return Integer.parseInt(s);
    }

    @Override
    public String convertToString(Integer i) {
        return Integer.toString(i);
    }

}

 

 

 

 

 

MainActivity.java

package com.jwsoft.javaproject;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ConvertInterface<String, Integer> convert = new ConvertClass();

        int i = convert.convertToInteger("30");
        String s = convert.convertToString(30);

        Log.e("ConvertToInteger : ", Integer.toString(i));
        Log.e("ConvertToString : ", s);
    }

}

실행 결과

 

 

 

 

 

 

 


JamesClass.java

package com.jwsoft.javaproject;

import java.util.List;

public class JamesClass {

    public static <T> List<T> addListItem(List<T> list, T item) {
        list.add(item);
        return list;
    }

}

 

 

 

 

 

 

 

 

MainActivity.java

package com.jwsoft.javaproject;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        List<String> list = new ArrayList<>();
        list.add("A");

        for (int i=0; i<list.size(); i++) {
            Log.e("", "Before : " + list.get(i));
        }

        JamesClass.addListItem(list, "B");
        JamesClass.addListItem(list, "C");

        for (int i=0; i<list.size(); i++) {
            Log.e("", "After : " + list.get(i));
        }
    }

}

실행 결과

 

 

 

 

 

 

 

 


WildCardClass.java

package com.jwsoft.javaproject;

import java.util.ArrayList;
import java.util.List;

public class WildCardClass {

    public static List<? extends Object> getObjectArrayList() {
        return new ArrayList<>();
    }

}

 

 

 

 

 

 

 

 

MainActivity.java

package com.jwsoft.javaproject;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        List<String> listString = (ArrayList<String>) WildCardClass.getObjectArrayList();
        listString.add("A");
        listString.add("B");

        for (int i=0; i<listString.size(); i++) {
            Log.e("listString : ", listString.get(i));
        }

        List<Integer> listInteger = (ArrayList<Integer>) WildCardClass.getObjectArrayList();
        listInteger.add(10);
        listInteger.add(20);

        for (int i=0; i<listInteger.size(); i++) {
            Log.e("listInteger : ", Integer.toString(listInteger.get(i)));
        }
    }

}

실행 결과