public class TestA {
@SuppressWarnings("unchecked")
public static <T> void main(String...args) throws InterruptedException {
Thread.currentThread().setName("--Parent--");
final InheritableThreadLocal<T> itl = new InheritableThreadLocal<T>() {
@Override
protected T childValue(T i)
{
System.out.println(Thread.currentThread().getName() + "\r\n" + i );
return i;
}
};
itl.set((T) new Integer(33));
Runnable r = new Runnable() {
@Override
public void run() {
Thread.currentThread().setName("--local--");
System.out.println(Thread.currentThread().getName() + "\r\n" + itl.get());
}
};
new Thread(r).start();
System.out.println(itl.get());
}
}
では、ここでどのようにタイプを指定できますか。上記のコードでは型が指定されていないため、デフォルトのオブジェクト型が図に示されています。ローカル内部クラス「InheritableThreadLocal」をジェネリックにしたい。