非境界ワイルドカード型 (unbounded wildcard type)
outline
ジェネリックスの型パラメータを汎用化する
- ジェネリックスの型を使用したいが、実際の型パラメータが
- 何であるかわからない
- 何であるか気にしない
この時、型パラメーターに ?
を用いる
ex
jp.ymatsukawa | + -- ubwildtype | | | + -- MyUtil.java + -- Main.java
jp.ymatsukawa/Main.java
package jp.ymatsukawa; import jp.ymatsukawa.ubwildtype.MyUtil; import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { Set<String> s1 = new HashSet<>(); Set<String> s2 = new HashSet<>(); s1.add("A"); s1.add("B"); s1.add("C"); s2.add("X"); s2.add("A"); s2.add("Z"); System.out.println(MyUtil.numOfCommonElement(s1, s2)); } }
System out
1
jp.ymatsukawa/ubwildtype/MyUtil.java
package jp.ymatsukawa.ubwildtype; import java.util.Set; public class MyUtil { private MyUtil() {} public static int numOfCommonElement(Set<?> set1, Set<?> set2) { int num = 0; for(Object o : set2) { if(set1.contains(o)) { ++num; } } return num; } }