aboutsummaryrefslogtreecommitdiffstats
path: root/docs/examples/introduction/CloneablePoint.java
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/introduction/CloneablePoint.java')
-rw-r--r--docs/examples/introduction/CloneablePoint.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/docs/examples/introduction/CloneablePoint.java b/docs/examples/introduction/CloneablePoint.java
new file mode 100644
index 000000000..c34509850
--- /dev/null
+++ b/docs/examples/introduction/CloneablePoint.java
@@ -0,0 +1,42 @@
+/*
+
+Copyright (c) Xerox Corporation 1998-2002. All rights reserved.
+
+Use and copying of this software and preparation of derivative works based
+upon this software are permitted. Any distribution of this software or
+derivative works must comply with all applicable United States export control
+laws.
+
+This software is made available AS IS, and Xerox Corporation makes no warranty
+about the software, its performance or its conformity to any specification.
+
+*/
+package introduction;
+
+public aspect CloneablePoint {
+
+ declare parents: Point implements Cloneable;
+
+ public Object Point.clone() throws CloneNotSupportedException {
+ // we choose to bring all fields up to date before cloning.
+ makeRectangular();
+ makePolar();
+ return super.clone();
+ }
+
+ public static void main(String[] args){
+ Point p1 = new Point();
+ Point p2 = null;
+
+ p1.setPolar(Math.PI, 1.0);
+ try {
+ p2 = (Point)p1.clone();
+ } catch (CloneNotSupportedException e) {}
+ System.out.println("p1 =" + p1 );
+ System.out.println("p2 =" + p2 );
+
+ p1.rotate(Math.PI / -2);
+ System.out.println("p1 =" + p1 );
+ System.out.println("p2 =" + p2 );
+ }
+}