public interface TestInterface { public void bar(); } public class TestClass { public void foo() { TestInterface test; if (System.currentTimeMillis() % 2 == 0) { test = new TestInterfaceImpl1(); } else { test = new TestInterfaceImpl2(); } test.bar(); } private class TestInterfaceImpl1 implements TestInterface { public void bar() { System.out.println("TestInterfaceImpl1"); } } private class TestInterfaceImpl2 implements TestInterface { public void bar() { System.out.println("TestInterfaceImpl2"); }} } TestClass t = new TestClass(); t.foo();