扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> Java技術(shù) >> 文章正文

如何在類被實(shí)例化之前動態(tài)靜態(tài)常量

被動態(tài)改變的類如下:
public class ScrollImage implements Face {

private static String TEST = "TEST";

public static void change(String change){
TEST=change;
}
public void myFace(String describe) {
}

/**
* Constructor for ScrollImage.
*/
public ScrollImage() {
super();
System.out.println(":))"+TEST);
show();
}
...
注意 通常使用new ScrollImage()時會輸出::))TEST
我的目的要通過類加載來改變它的輸出,實(shí)際上是改變了靜態(tài)常量的值,也相當(dāng)于改變了任何一個實(shí)例對該常量的引用值。

先判斷該類是否為我們需要動態(tài)改變的類
Class cImage;
Object oImage;
MyLoader loader = new MyLoader();

cImage =
loader.load("ScrollImage.class", "cn.com.efly.swt.ScrollImage");
if (Face.class.isAssignableFrom(cImage))
System.out.println(":):)");

改變它:
String arg = "changed";
/**也可以通過直接訪問常量來改變它,但是要修改常量的可見為public
*My ClassLoader:
*public class MyLoader extends ClassLoader {
*    static int maxsize = 10000;
*    public Class load(String namefile, String classname)
*        throws java.lang.Exception {
*        try {
*            //進(jìn)行判斷這個class是否已經(jīng)調(diào)入,已經(jīng)有就直接返回,不然就調(diào)入
*            Class ctmp = this.findLoadedClass(classname);
*            System.out.println(ctmp.getName() + " is load");
*            return ctmp;
*        } catch (Exception e) {
*            //System.out.println(e);
*        }
*        java.io.FileInputStream in = new java.io.FileInputStream(namefile);
*        byte[] classbyte = new byte[maxsize];
*        //實(shí)際應(yīng)用時完全可以對一個文件進(jìn)行加解密處理,只要保證使用*defineClass時classbyte中
*        //已經(jīng)解密后的內(nèi)容就可以
*        int readsize;
*        readsize = in.read(classbyte);
*        // System.out.println("讀文件長:"+readsize);
*        in.close();
*        return defineClass(classname, classbyte, 0, readsize);
*    }
*}
*/
//cImage.getField("TEST").set(null,"Changed");
java.lang.reflect.Method change =
cImage.getMethod("change", new Class[] { String.class });
change.invoke(change, new Object[] { arg });
實(shí)例化該類,可以看到結(jié)果:
oImage = cImage.newInstance();
結(jié)果輸出:
:):)
:))changed

總結(jié):改方法可以用來解決一些特殊情況下遇到的問題,但是我不鼓勵大家使用。在我新的設(shè)計中已經(jīng)不考慮使用改方法,它對結(jié)構(gòu)沒有任何好處。

作者:efly | 文章來源:賽迪網(wǎng) | 更新時間:2007-12-15 16:45:10

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    C++類的友元成員
    軟件技術(shù)
    · 開發(fā)語言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·j2se 嵌入式腳本抓取引擎
    ·JAVA開發(fā)的6個實(shí)踐的例子
    ·JBuilder7 / Weblogic7開發(fā)
    ·JAVA中的抽象類型的一些概
    ·java語言開發(fā)程序中的幾個
    ·了解java開發(fā)語言在軟件開
    ·如何才能使用Java實(shí)現(xiàn)內(nèi)部
    ·Java開發(fā)學(xué)習(xí)小心使用Date
    ·Java程序員應(yīng)該了解那些開
    ·java性能優(yōu)化的一些見解
    ·介紹JDK5.0一些collection
    ·基礎(chǔ)學(xué)習(xí):java中使用存儲
    ·解析c#語言和java語言最相
    ·Java語言學(xué)習(xí):jAVA中 的多
    ·Java是不是應(yīng)該增加新特性
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    永平县| 珲春市| 勃利县| 仁寿县| 临朐县| 墨江| 无棣县| 雷山县| 化隆| 东光县| 宣城市| 海安县| 西平县| 利辛县| 乌兰县| 三台县| 襄樊市| 柞水县| 梁平县| 寿宁县| 巴林左旗| 灵台县| 固原市| 凉城县| 浦城县| 霍城县| 绍兴市| 尚义县| 开鲁县| 桃江县| 巫溪县| 瓦房店市| 连平县| 罗平县| 贵港市| 寻甸| 丰宁| 平山县| 永丰县| 平潭县| 大港区|