11.10 Map
This commit is contained in:
11
src/access/Cake.java
Normal file
11
src/access/Cake.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package access;//: access/Cake.java
|
||||
// Accesses a class in a separate compilation unit.
|
||||
|
||||
class Cake {
|
||||
public static void main(String[] args) {
|
||||
Pie x = new Pie();
|
||||
x.f();
|
||||
}
|
||||
} /* Output:
|
||||
Pie.f()
|
||||
*///:~
|
||||
19
src/access/ChocolateChip.java
Normal file
19
src/access/ChocolateChip.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package access;//: access/ChocolateChip.java
|
||||
// Can't use package-access member from another package.
|
||||
import access.dessert.*;
|
||||
|
||||
public class ChocolateChip extends Cookie {
|
||||
public ChocolateChip() {
|
||||
System.out.println("ChocolateChip constructor");
|
||||
}
|
||||
public void chomp() {
|
||||
//! bite(); // Can't access bite
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
ChocolateChip x = new ChocolateChip();
|
||||
x.chomp();
|
||||
}
|
||||
} /* Output:
|
||||
Cookie constructor
|
||||
ChocolateChip constructor
|
||||
*///:~
|
||||
17
src/access/ChocolateChip2.java
Normal file
17
src/access/ChocolateChip2.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package access;//: access/ChocolateChip2.java
|
||||
import access.cookie2.*;
|
||||
|
||||
public class ChocolateChip2 extends Cookie {
|
||||
public ChocolateChip2() {
|
||||
System.out.println("ChocolateChip2 constructor");
|
||||
}
|
||||
public void chomp() { bite(); } // Protected method
|
||||
public static void main(String[] args) {
|
||||
ChocolateChip2 x = new ChocolateChip2();
|
||||
x.chomp();
|
||||
}
|
||||
} /* Output:
|
||||
Cookie constructor
|
||||
ChocolateChip2 constructor
|
||||
bite
|
||||
*///:~
|
||||
12
src/access/Dinner.java
Normal file
12
src/access/Dinner.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package access;//: access/Dinner.java
|
||||
// Uses the library.
|
||||
import access.dessert.*;
|
||||
|
||||
public class Dinner {
|
||||
public static void main(String[] args) {
|
||||
Cookie x = new Cookie();
|
||||
//! x.bite(); // Can't access
|
||||
}
|
||||
} /* Output:
|
||||
Cookie constructor
|
||||
*///:~
|
||||
7
src/access/FullQualification.java
Normal file
7
src/access/FullQualification.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package access;//: access/FullQualification.java
|
||||
|
||||
public class FullQualification {
|
||||
public static void main(String[] args) {
|
||||
java.util.ArrayList list = new java.util.ArrayList();
|
||||
}
|
||||
} ///:~
|
||||
16
src/access/IceCream.java
Normal file
16
src/access/IceCream.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package access;//: access/IceCream.java
|
||||
// Demonstrates "private" keyword.
|
||||
|
||||
class Sundae {
|
||||
private Sundae() {}
|
||||
static Sundae makeASundae() {
|
||||
return new Sundae();
|
||||
}
|
||||
}
|
||||
|
||||
public class IceCream {
|
||||
public static void main(String[] args) {
|
||||
//! Sundae x = new Sundae();
|
||||
Sundae x = Sundae.makeASundae();
|
||||
}
|
||||
} ///:~
|
||||
8
src/access/ImportedMyClass.java
Normal file
8
src/access/ImportedMyClass.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package access;//: access/ImportedMyClass.java
|
||||
import access.mypackage.*;
|
||||
|
||||
public class ImportedMyClass {
|
||||
public static void main(String[] args) {
|
||||
MyClass m = new MyClass();
|
||||
}
|
||||
} ///:~
|
||||
13
src/access/LibTest.java
Normal file
13
src/access/LibTest.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package access;//: access/LibTest.java
|
||||
// Uses the library.
|
||||
import net.mindview.simple.*;
|
||||
|
||||
public class LibTest {
|
||||
public static void main(String[] args) {
|
||||
Vector v = new Vector();
|
||||
List l = new List();
|
||||
}
|
||||
} /* Output:
|
||||
net.mindview.simple.Vector
|
||||
net.mindview.simple.List
|
||||
*///:~
|
||||
36
src/access/Lunch.java
Normal file
36
src/access/Lunch.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package access;//: access/Lunch.java
|
||||
// Demonstrates class access specifiers. Make a class
|
||||
// effectively private with private constructors:
|
||||
|
||||
class Soup1 {
|
||||
private Soup1() {}
|
||||
// (1) Allow creation via static method:
|
||||
public static Soup1 makeSoup() {
|
||||
return new Soup1();
|
||||
}
|
||||
}
|
||||
|
||||
class Soup2 {
|
||||
private Soup2() {}
|
||||
// (2) Create a static object and return a reference
|
||||
// upon request.(The "Singleton" pattern):
|
||||
private static Soup2 ps1 = new Soup2();
|
||||
public static Soup2 access() {
|
||||
return ps1;
|
||||
}
|
||||
public void f() {}
|
||||
}
|
||||
|
||||
// Only one public class allowed per file:
|
||||
public class Lunch {
|
||||
void testPrivate() {
|
||||
// Can't do this! Private constructor:
|
||||
//! Soup1 soup = new Soup1();
|
||||
}
|
||||
void testStatic() {
|
||||
Soup1 soup = Soup1.makeSoup();
|
||||
}
|
||||
void testSingleton() {
|
||||
Soup2.access().f();
|
||||
}
|
||||
} ///:~
|
||||
12
src/access/OrganizedByAccess.java
Normal file
12
src/access/OrganizedByAccess.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package access;//: access/OrganizedByAccess.java
|
||||
|
||||
public class OrganizedByAccess {
|
||||
public void pub1() { /* ... */ }
|
||||
public void pub2() { /* ... */ }
|
||||
public void pub3() { /* ... */ }
|
||||
private void priv1() { /* ... */ }
|
||||
private void priv2() { /* ... */ }
|
||||
private void priv3() { /* ... */ }
|
||||
private int i;
|
||||
// ...
|
||||
} ///:~
|
||||
6
src/access/Pie.java
Normal file
6
src/access/Pie.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package access;//: access/Pie.java
|
||||
// The other class.
|
||||
|
||||
class Pie {
|
||||
void f() { System.out.println("Pie.f()"); }
|
||||
} ///:~
|
||||
17
src/access/PrintTest.java
Normal file
17
src/access/PrintTest.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package access;//: access/PrintTest.java
|
||||
// Uses the static printing methods in Print.java.
|
||||
import static net.mindview.util.Print.*;
|
||||
|
||||
public class PrintTest {
|
||||
public static void main(String[] args) {
|
||||
print("Available from now on!");
|
||||
print(100);
|
||||
print(100L);
|
||||
print(3.14159);
|
||||
}
|
||||
} /* Output:
|
||||
Available from now on!
|
||||
100
|
||||
100
|
||||
3.14159
|
||||
*///:~
|
||||
8
src/access/QualifiedMyClass.java
Normal file
8
src/access/QualifiedMyClass.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package access;//: access/QualifiedMyClass.java
|
||||
|
||||
public class QualifiedMyClass {
|
||||
public static void main(String[] args) {
|
||||
access.mypackage.MyClass m =
|
||||
new access.mypackage.MyClass();
|
||||
}
|
||||
} ///:~
|
||||
8
src/access/SingleImport.java
Normal file
8
src/access/SingleImport.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package access;//: access/SingleImport.java
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class SingleImport {
|
||||
public static void main(String[] args) {
|
||||
ArrayList list = new java.util.ArrayList();
|
||||
}
|
||||
} ///:~
|
||||
189
src/access/build.xml
Normal file
189
src/access/build.xml
Normal file
@@ -0,0 +1,189 @@
|
||||
<?xml version="1.0" ?>
|
||||
|
||||
<project
|
||||
basedir="."
|
||||
default="run"
|
||||
name="Thinking in Java, 4th Edition by Bruce Eckel (chapter: access)">
|
||||
|
||||
<description>
|
||||
build.xml for the source code for the access chapter of
|
||||
Thinking in Java, 4th Edition by Bruce Eckel
|
||||
Source code available at http://www.MindView.net
|
||||
See copyright notice in CopyRight.txt
|
||||
|
||||
Ant available from: http://jakarta.apache.org/ant
|
||||
|
||||
To see options, type: ant -p
|
||||
|
||||
This file was automatically generated by AntBuilder
|
||||
</description>
|
||||
|
||||
<condition property="version1.5">
|
||||
<equals arg1="1.5" arg2="${ant.java.version}"/>
|
||||
</condition>
|
||||
|
||||
<target name="net_mindview_util">
|
||||
<javac
|
||||
classpath="${basedir}/.."
|
||||
srcdir="${basedir}/../net/mindview/util/">
|
||||
<compilerarg value="-Xmaxerrs"/>
|
||||
<compilerarg value="10"/>
|
||||
</javac>
|
||||
</target>
|
||||
|
||||
<target name="net_mindview_simple">
|
||||
<javac
|
||||
classpath="${basedir}/.."
|
||||
srcdir="${basedir}/../net/mindview/simple/">
|
||||
<compilerarg value="-Xmaxerrs"/>
|
||||
<compilerarg value="10"/>
|
||||
</javac>
|
||||
</target>
|
||||
|
||||
<target
|
||||
depends="net_mindview_util,net_mindview_simple"
|
||||
description="Build all classes in this directory"
|
||||
name="build">
|
||||
<fail message="J2SE5 required" unless="version1.5"/>
|
||||
<echo message="Building 'access'"/>
|
||||
<javac
|
||||
classpath="${basedir}/.."
|
||||
debug="true"
|
||||
srcdir="${basedir}">
|
||||
<compilerarg value="-Xmaxerrs"/>
|
||||
<compilerarg value="10"/>
|
||||
</javac>
|
||||
<echo message="Build 'access' succeeded"/>
|
||||
</target>
|
||||
|
||||
<target name="Cake">
|
||||
<java
|
||||
classname="Cake"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="ChocolateChip">
|
||||
<java
|
||||
classname="ChocolateChip"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="ChocolateChip2">
|
||||
<java
|
||||
classname="ChocolateChip2"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="Dinner">
|
||||
<java
|
||||
classname="Dinner"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="FullQualification">
|
||||
<java
|
||||
classname="FullQualification"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="IceCream">
|
||||
<java
|
||||
classname="IceCream"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="ImportedMyClass">
|
||||
<java
|
||||
classname="ImportedMyClass"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="LibTest">
|
||||
<java
|
||||
classname="LibTest"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="PrintTest">
|
||||
<java
|
||||
classname="PrintTest"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="QualifiedMyClass">
|
||||
<java
|
||||
classname="QualifiedMyClass"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="SingleImport">
|
||||
<java
|
||||
classname="SingleImport"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../access/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target
|
||||
depends="build"
|
||||
description="Compile and run"
|
||||
name="run">
|
||||
<touch file="failures"/>
|
||||
<antcall target="Cake"/>
|
||||
<antcall target="ChocolateChip"/>
|
||||
<antcall target="ChocolateChip2"/>
|
||||
<antcall target="Dinner"/>
|
||||
<antcall target="FullQualification"/>
|
||||
<antcall target="IceCream"/>
|
||||
<antcall target="ImportedMyClass"/>
|
||||
<antcall target="LibTest"/>
|
||||
<antcall target="PrintTest"/>
|
||||
<antcall target="QualifiedMyClass"/>
|
||||
<antcall target="SingleImport"/>
|
||||
<delete file="failures"/>
|
||||
</target>
|
||||
|
||||
<target description="delete all byproducts" name="clean">
|
||||
<delete>
|
||||
<fileset dir="${basedir}" includes="**/*.class"/>
|
||||
<fileset dir="${basedir}" includes="**/*Output.txt"/>
|
||||
<fileset dir="${basedir}" includes="**/log.txt"/>
|
||||
<fileset dir="${basedir}" includes="failures"/>
|
||||
</delete>
|
||||
<echo message="clean successful"/>
|
||||
</target>
|
||||
|
||||
</project>
|
||||
|
||||
|
||||
11
src/access/cookie2/Cookie.java
Normal file
11
src/access/cookie2/Cookie.java
Normal file
@@ -0,0 +1,11 @@
|
||||
//: access/cookie2/Cookie.java
|
||||
package access.cookie2;
|
||||
|
||||
public class Cookie {
|
||||
public Cookie() {
|
||||
System.out.println("Cookie constructor");
|
||||
}
|
||||
protected void bite() {
|
||||
System.out.println("bite");
|
||||
}
|
||||
} ///:~
|
||||
10
src/access/dessert/Cookie.java
Normal file
10
src/access/dessert/Cookie.java
Normal file
@@ -0,0 +1,10 @@
|
||||
//: access/dessert/Cookie.java
|
||||
// Creates a library.
|
||||
package access.dessert;
|
||||
|
||||
public class Cookie {
|
||||
public Cookie() {
|
||||
System.out.println("Cookie constructor");
|
||||
}
|
||||
void bite() { System.out.println("bite"); }
|
||||
} ///:~
|
||||
6
src/access/mypackage/MyClass.java
Normal file
6
src/access/mypackage/MyClass.java
Normal file
@@ -0,0 +1,6 @@
|
||||
//: access/mypackage/MyClass.java
|
||||
package access.mypackage;
|
||||
|
||||
public class MyClass {
|
||||
// ...
|
||||
} ///:~
|
||||
Reference in New Issue
Block a user