⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parserimpltablebase.java

📁 JAVA 所有包
💻 JAVA
字号:
/* * @(#)ParserImplTableBase.java	1.8 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.spi.orb ;import java.util.Map ;import java.util.AbstractMap ;import java.util.Set ;import java.util.AbstractSet ;import java.util.Iterator ;import java.util.Properties ;import java.lang.reflect.Field ;import org.omg.CORBA.INTERNAL ;// XXX This could probably be further extended by using more reflection and// a dynamic proxy that satisfies the interfaces that are inherited by the// more derived class.  Do we want to go that far?public abstract class ParserImplTableBase extends ParserImplBase {    private final ParserData[] entries ;    public ParserImplTableBase( ParserData[] entries )     {	this.entries = entries ;	setDefaultValues() ;    }    protected PropertyParser makeParser()    {	PropertyParser result = new PropertyParser() ;	for (int ctr=0; ctr<entries.length; ctr++ ) {	    ParserData entry = entries[ctr] ;	    entry.addToParser( result ) ;	}	return result ;    }    private static final class MapEntry implements Map.Entry {	private Object key ;	private Object value ;	public MapEntry( Object key )	{	    this.key = key ;	}	public Object getKey()	{	    return key ;	}	public Object getValue()	{	    return value ;	}	public Object setValue( Object value ) 	{	    Object result = this.value ;	    this.value = value ;	    return result ;	}	public boolean equals( Object obj )	{	    if (!(obj instanceof MapEntry))		return false ;	    MapEntry other = (MapEntry)obj ;	    return (key.equals( other.key )) && 		(value.equals( other.value )) ;	}	public int hashCode()	{	    return key.hashCode() ^ value.hashCode() ;	}    }    // Construct a map that maps field names to test or default values,    // then use setFields from the parent class.  A map is constructed    // by implementing AbstractMap, which requires implementing the    // entrySet() method, which requires implementing a set of    // map entries, which requires implementing an iterator,    // which iterates over the ParserData, extracting the    // correct (key, value) pairs (nested typed lambda expression).    private static class FieldMap extends AbstractMap {	private final ParserData[] entries ;	private final boolean useDefault ;	public FieldMap( ParserData[] entries, boolean useDefault )	{	    this.entries = entries ;	    this.useDefault = useDefault ;	}	public Set entrySet() 	{	    return new AbstractSet() 	    {		public Iterator iterator() 		{		    return new Iterator() {			// index of next element to return			int ctr = 0 ;			public boolean hasNext() 			{			    return ctr < entries.length ;			}			public Object next() 			{			    ParserData pd = entries[ctr++] ;			    Map.Entry result = new MapEntry( pd.getFieldName() ) ;			    if (useDefault)				result.setValue( pd.getDefaultValue() ) ;			    else				result.setValue( pd.getTestValue() ) ;			    return result ;			}			public void remove()			{			    throw new UnsupportedOperationException() ;			}		    } ;		}		public int size() 		{		    return entries.length ;		}	    } ;	}    } ;    protected void setDefaultValues()    {	Map map = new FieldMap( entries, true ) ;	setFields( map ) ;	    }    public void setTestValues()    {	Map map = new FieldMap( entries, false ) ;	setFields( map ) ;	    }}

⌨️ 快捷键说明

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