void f(Object[] objs1, Object[] o2) { Object[] objs; if (bill()) { objs = objs1; } else { C++ --- template class X { ... }; X x; Java ---- class X { ... } // nem: X x; X x; class A { void f() {} } class X { void g(T t) { t.f(); } } class X2 { void g(Object t) { ((A)t).f(); } } public class XYZ {}