Javaコアパッケージのパッケージアクセス可能メンバーへのアクセス


Javaコアパッケージのパッケージアクセス可能なメンバーにアクセスする方法について説明します.パケットアクセス性のメンバーおよびメソッドとは、メンバーまたはメソッドを宣言するときにpublic、protected、privateなどのアクセス修飾語を付けないメンバーおよびメソッドを指します.パケットアクセス可能なメンバーは、同じパケット内の他のクラスにアクセスできます.この文書では、BorderLayoutのcenter変数を例に、javaコアパッケージのパッケージアクセス可能なメンバーにアクセスする方法について簡単に説明します.
1、BorderLayoutのcenter変数にアクセスするために、AwtHelperクラスを作成し、そのパッケージをjavaと宣言します.awt、つまりBorderLayoutがいるパッケージと同じ名前です.コードは次のとおりです.
package java.awt;

import javax.swing.JButton;
import javax.swing.JFrame;

public class AwtHelper {

    public static Component getChild(BorderLayout layout,String key) {
        Component result = null;
        if(key == BorderLayout.NORTH)
            result = layout.north;
        else if(key == BorderLayout.SOUTH)
            result = layout.south;
        else if(key == BorderLayout.EAST)
            result = layout.east;
        else if(key == BorderLayout.WEST)
            result = layout.west;
        else if(key == BorderLayout.CENTER)
            result = layout.center;
        return result;
    }
    
    public static void main(String[] args) {
        Container container = createTestContainer();
        if( container.getLayout() instanceof BorderLayout) {
            BorderLayout layout = (BorderLayout)container.getLayout();
            Component center = AwtHelper.getChild(layout, BorderLayout.CENTER);
            System.out.println("Center Component = " + center);
        }
    }
    
    public static Container createTestContainer() {
        JFrame frame = new JFrame();
        Container con = frame.getContentPane();
        con.setLayout(new BorderLayout());
        con.add(new JButton("Center"),BorderLayout.CENTER);
        return con;
    }
}

2、AwtHelper.JAvaコンパイル後、このクラスを起動クラスパス実行コマンドjava-Xbootclasspath/p:.java.awt.AwtHelper
Center Component = javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignment
Y=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@1adc30,f
lags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,dis
abledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom
=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,
rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Center,defaultCapable=tru
e]