objectstreamclasscorbaext.java

来自「java jdk 1.4的源码」· Java 代码 · 共 103 行

JAVA
103
字号
/* * @(#)ObjectStreamClassCorbaExt.java	1.3 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.internal.io;import java.security.AccessController;import java.security.PrivilegedExceptionAction;import java.security.PrivilegedActionException;import java.security.PrivilegedAction;import java.lang.reflect.Modifier;import java.lang.reflect.Array;import java.lang.reflect.Field;import java.lang.reflect.Member;import java.lang.reflect.Method;// This file contains some utility methods that// originally were in the OSC in the RMI-IIOP// code delivered by IBM.  They don't make// sense there, and hence have been put// here so that they can be factored out in// an attempt to eliminate redundant code from// ObjectStreamClass.  Eventually the goal is// to move to java.io.ObjectStreamClass, and// java.io.ObjectStreamField.// class is package private for security reasonsclass ObjectStreamClassCorbaExt {    static final boolean isAbstractInterface(Class cl) {        Method[] method = ObjectStreamClassCorbaExt.getDeclaredMethods(cl);        // Test for abstractness (used under rmi/iiop when determining whether        // to call read/write_Abstract        if (!cl.isInterface()) {            return false;        }        if (method.length == 0) {            return false;        }        boolean isAbstractInterface = false;        for (int im = method.length -1 ; (im > -1); im--) {            Class exceptions[] = method[im].getExceptionTypes();            if (exceptions.length == 0) {                return false;            }                           // Set abstractness to false and flip to true only if the 	    // method has at least one good exception            for (int ime = exceptions.length -1; (ime > -1) && (isAbstractInterface == false); ime--) {                if ((java.rmi.RemoteException.class == exceptions[ime]) ||                    (java.lang.Throwable.class == exceptions[ime]) ||                    (java.lang.Exception.class == exceptions[ime]) ||                    (java.io.IOException.class == exceptions[ime])) {                    isAbstractInterface = true;                }            }        }	Class superclass = cl.getSuperclass();        isAbstractInterface = (isAbstractInterface && ((superclass == null) || ( ObjectStreamClassCorbaExt.isAbstractInterface(superclass))));	return isAbstractInterface;    }    /*     *  Returns TRUE if type is 'any'.     */    static final boolean isAny(String typeString) {	int isAny = 0;	if ( (typeString != null) &&	    (typeString.equals("Ljava/lang/Object;") ||	     typeString.equals("Ljava/io/Serializable;") ||	     typeString.equals("Ljava/io/Externalizable;")) )                isAny = 1;        return (isAny==1);    }    private static final Method[] getDeclaredMethods(final Class clz) {        return (Method[]) AccessController.doPrivileged(new PrivilegedAction() {            public Object run() {                return clz.getDeclaredMethods();            }        });    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?