1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import java.lang.reflect.*;
-
- public class C {
-
- public static B.D[] arr = new B.D[5];
-
- public static void main(String[]argv) {
- arr[0] = new B.D(42);
- arr[1] = new B.D(22);
- arr[2] = new B.D(46);
- arr[3] = new B.D(50);
- arr[4] = new B.D(54);
-
- B.D[] arr2 = arr.clone();
-
-
- // Check the clone is OK
- if (arr2[0].i!=42) throw new RuntimeException("Call that a clone 0");
- if (arr2[1].i!=22) throw new RuntimeException("Call that a clone 1");
- if (arr2[2].i!=46) throw new RuntimeException("Call that a clone 2");
- if (arr2[3].i!=50) throw new RuntimeException("Call that a clone 3");
- if (arr2[4].i!=54) throw new RuntimeException("Call that a clone 4");
- System.err.println("Clone OK - attempting value manipulation");
-
- // Change the clone, check the original is OK
- arr2[2] = new B.D(1);
- if (arr[2].i == 1) throw new RuntimeException("Shouldnt have affected original");
- if (arr2[2].i != 1) throw new RuntimeException("Should have affected clone");
-
-
- System.err.println("Clone OK - finished");
- }
- }
-
-
- class B {
- public static class D {
- public int i;
- D(int x) { i=x;}
- }
- }
|