集册 Java实例教程 使用自省显示给定类的属性。

使用自省显示给定类的属性。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

436
使用自省显示给定类的属性。

/* ====================================================================

 * The VM Systems, Inc. Software License, Version 1.0

 *

 * Copyright (c) 2002 VM Systems, Inc.  All rights reserved.

 *

 * THIS SOFTWARE IS PROVIDED PURSUANT TO THE TERMS OF THIS LICENSE.

 * ANY USE, REPRODUCTION, OR DISTRIBUTION OF THE SOFTWARE OR ANY PART

 * THEREOF CONSTITUTES ACCEPTANCE OF THE TERMS AND CONDITIONS HEREOF.

 *

 * 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

 *        VM Systems, Inc. (http://www.vmguys.com/)."

 *    Alternately, this acknowledgment may appear in the software itself,

 *    if and wherever such third-party acknowledgments normally appear.

 *

 * 4. The names "VM Systems" must not be used to endorse or promote products

 *    derived from this software without prior written permission. For written

 *    permission, please contact info@vmguys.com.

 *

 * 5. VM Systems, Inc. and any other person or entity that creates or

 *    contributes to the creation of any modifications to the original

 *    software specifically disclaims any liability to any person or

 *    entity for claims brought based on infringement of intellectual

 *    property rights or otherwise. No assurances are provided that the

 *    software does not infringe on the property rights of others.

 *

 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED

 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES

 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE TITLE

 * AND NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VM SYSTEMS, INC.,

 * ITS SHAREHOLDERS, DIRECTORS OR EMPLOYEES 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. EACH RECIPIENT OR USER IS SOLELY RESPONSIBLE

 * FOR DETERMINING THE APPROPRIATENESS OF USING AND DISTRIBUTING THE SOFTWARE

 * AND ASSUMES ALL RISKS ASSOCIATED WITH ITS EXERCISE OF RIGHTS HEREUNDER,

 * INCLUDING BUT NOT LIMITED TO THE RISKS (INCLUDING COSTS) OF ERRORS,

 * COMPLIANCE WITH APPLICABLE LAWS OR INTERRUPTION OF OPERATIONS.

 * ====================================================================

 */

//package com.nowjava;


import java.beans.*;/**from nowjava**/


public class Main {

    /** Displays properties for a given class using introspection.

     */

    static public String displayProperties(Class cls)

            throws IntrospectionException {

        BeanInfo beanInfo = Introspector.getBeanInfo(cls);

        if (beanInfo == null) {

            return "No beans; getBeanInfo() returned null for "

                    + cls.getName();

        }

        PropertyDescriptor[] properties = beanInfo.getPropertyDescriptors();

        StringBuffer result = new StringBuffer();/*来 自 时   代    Java - nowjava.com*/

        for (int i = 0; i < properties.length; i++) {

            result.append("Property " + (i + 1) + " of "

                    + properties.length + ":\n");

            if (properties[i].getPropertyType() != null) {

                result.append("\tProperty Class: "

                        + properties[i].getPropertyType().getName() + "\n");

            } else

                result.append("\tProperty Class is NULL.\n");

            if (properties[i].getReadMethod() != null) {

                result.append("\tRead method: "

                        + properties[i].getReadMethod().getName() + "\n");

            } else

                result.append("\tRead method is NULL.\n");

            if (properties[i].getWriteMethod() != n
展开阅读全文