oracle java tutorial walkthrough -- Nested Classes4 code
package nestedclasses.session0;
/*
* Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle or the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
public class LocalClassExample {
private static String regularExpression = "[^0-9]";
interface HelloThere {
// public void greet();
}
static public void validatePhoneNumber(
String phoneNumber1, String phoneNumber2) {
int numberLength = 10;
// Valid in JDK 8 and later:
// int numberLength = 10;
abstract class PhoneNumber2 implements HelloThere {
final static int a = 10;
String regularExpression = "[^0-9-]";
String formattedPhoneNumber = null;
PhoneNumber2(String phoneNumber) {
// numberLength = 7;
String currentNumber = phoneNumber.replaceAll(
LocalClassExample.this.regularExpression, "");
if (currentNumber.length() == numberLength)
formattedPhoneNumber = currentNumber;
else
formattedPhoneNumber = null;
}
public String getNumber() {
return formattedPhoneNumber;
}
// Valid in JDK 8 and later:
public void printOriginalNumbers() {
System.out.println("Original numbers are " + phoneNumber1
+ " and " + phoneNumber2);
}
}
class PhoneNumber extends PhoneNumber2 {
PhoneNumber(String phoneNumber) {
super(phoneNumber);
}
}
PhoneNumber myNumber1 = new PhoneNumber(phoneNumber1);
PhoneNumber myNumber2 = new PhoneNumber(phoneNumber2);
myNumber1.printOriginalNumbers();
// Valid in JDK 8 and later:
// myNumber1.printOriginalNumbers();
if (myNumber1.getNumber() == null)
System.out.println("First number is invalid");
else
System.out.println("First number is " + myNumber1.getNumber());
if (myNumber2.getNumber() == null)
System.out.println("Second number is invalid");
else
System.out.println("Second number is " + myNumber2.getNumber());
}
public void sayGoodbyeInEnglish() {
class EnglishGoodbye {
public static final String farwell = "bye bye bye";
public void sayGoodbye() {
System.out.println(farwell);
}
}
new EnglishGoodbye().sayGoodbye();
}
public static void main(String... args) {
LocalClassExample l = new LocalClassExample();
l.validatePhoneNumber("123-456-7890", "456-7890");
l.sayGoodbyeInEnglish();
}
}
No comments:
Post a Comment