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)));
}
}
}