Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * Copyright (c) 2002-2007 Sun Microsystems, Inc.  All rights reserved.
 *
 *  The Sun Project JXTA(TM) Software License
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  1. Redistributions of source code must retain the above copyright notice,
 *     this list of conditions and the following disclaimer.
 *
 *  2. 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.
 *
 *  3. The end-user documentation included with the redistribution, if any, must
 *     include the following acknowledgment: "This product includes software
 *     developed by Sun Microsystems, Inc. for JXTA(TM) technology."
 *     Alternately, this acknowledgment may appear in the software itself, if
 *     and wherever such third-party acknowledgments normally appear.
 *
 *  4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" must
 *     not be used to endorse or promote products derived from this software
 *     without prior written permission. For written permission, please contact
 *     Project JXTA at http://www.jxta.org.
 *
 *  5. Products derived from this software may not be called "JXTA", nor may
 *     "JXTA" appear in their name, without prior written permission of Sun.
 *
 *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 SUN
 *  MICROSYSTEMS OR ITS 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.
 *
 *  JXTA is a registered trademark of Sun Microsystems, Inc. in the United
 *  States and other countries.
 *
 *  Please see the license information page at :
 *  <http://www.jxta.org/project/www/license.html> for instructions on use of
 *  the license in source files.
 *
 *  ====================================================================
 *
 *  This software consists of voluntary contributions made by many individuals
 *  on behalf of Project JXTA. For more information on Project JXTA, please see
 *  http://www.jxta.org.
 *
 *  This license is based on the BSD license adopted by the Apache Foundation.
 */

public class Main {
    /**
     Quick checks for <em>possibly</em> determining equality of two objects.
        
     <P>This method exists to make <tt>equals</tt> implementations read more legibly,
     and to avoid multiple <tt>return</tt> statements.
        
     <P><em>It cannot be used by itself to fully implement <tt>equals</tt>. </em>
     It uses <tt>==</tt> and <tt>instanceof</tt> to determine if equality can be
     found cheaply, without the need to examine field values in detail. It is
     <em>always</em> paired with some other method
     (usually {@link #equalsFor(Object[], Object[])}), as in the following example :
     <PRE>
     public boolean equals(Object aThat){
       Boolean result = ModelUtil.quickEquals(this, aThat);
       <b>if ( result == null ){</b>
     //quick checks not sufficient to determine equality,
     //so a full field-by-field check is needed :
     This this = (This) aThat; //will not fail
     result = ModelUtil.equalsFor(this.getSignificantFields(), that.getSignificantFields());
       }
       return result;
     }
     </PRE>
        
     <P>This method is unusual since it returns a <tt>Boolean</tt> that takes
     <em>3</em> values : <tt>true</tt>, <tt>false</tt>, and <tt>null</tt>. Here,
     <tt>true</tt> and <tt>false</tt> mean that a simple quick check was able to
     determine equality. <span class='highlight'>The <tt>null</tt> case means that the
     quick checks were not able to determine if the objects are equal or not, and that
     further field-by-field examination is necessary. The caller must always perform a
     check-for-null on the return value.</span>
     */
    static public Boolean quickEquals(Object aThis, Object aThat) {

        Boolean result = null;

        if (aThis == aThat) {

            result = Boolean.TRUE;
        } else {

            Class<?> thisClass = aThis.getClass();

            if (!thisClass.isInstance(aThat)) {

                result = Boolean.FALSE;
            }
        }

        return result;
    }
}