11.10 Map

This commit is contained in:
2018-06-17 19:26:58 +08:00
commit c47f63d484
879 changed files with 39735 additions and 0 deletions

11
src/access/Cake.java Normal file
View 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()
*///:~

View 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
*///:~

View 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
View 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
*///:~

View 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
View 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();
}
} ///:~

View 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
View 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
View 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();
}
} ///:~

View 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
View 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
View 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
*///:~

View 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();
}
} ///:~

View 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
View 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>

View 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");
}
} ///:~

View 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"); }
} ///:~

View File

@@ -0,0 +1,6 @@
//: access/mypackage/MyClass.java
package access.mypackage;
public class MyClass {
// ...
} ///:~