??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲天堂第二页,国产一区欧美一区,久久综合九九http://www.aygfsteel.com/zhanjh/zh-cnThu, 03 Jul 2025 12:30:17 GMTThu, 03 Jul 2025 12:30:17 GMT60关于java变量的引用(referenceQ?/title><link>http://www.aygfsteel.com/zhanjh/archive/2008/03/04/183755.html</link><dc:creator>zhan</dc:creator><author>zhan</author><pubDate>Tue, 04 Mar 2008 09:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhanjh/archive/2008/03/04/183755.html</guid><wfw:comment>http://www.aygfsteel.com/zhanjh/comments/183755.html</wfw:comment><comments>http://www.aygfsteel.com/zhanjh/archive/2008/03/04/183755.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhanjh/comments/commentRss/183755.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhanjh/services/trackbacks/183755.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080;"> 1</span> <span style="color: #0000ff;">package</span><span style="color: #000000;"> cn.com.gentek.imatrix.test;<br /> </span><span style="color: #008080;"> 2</span> <span style="color: #000000;"><br /> </span><span style="color: #008080;"> 3</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> tesRef {<br /> </span><span style="color: #008080;"> 4</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> DataItem item1;<br /> </span><span style="color: #008080;"> 5</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> DataItem item2;<br /> </span><span style="color: #008080;"> 6</span> <span style="color: #000000;"><br /> </span><span style="color: #008080;"> 7</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> tesRef() {<br /> </span><span style="color: #008080;"> 8</span> <span style="color: #000000;">        item1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> DataItem();<br /> </span><span style="color: #008080;"> 9</span> <span style="color: #000000;">        item2 </span><span style="color: #000000;">=</span><span style="color: #000000;"> item1;<br /> </span><span style="color: #008080;">10</span> <span style="color: #000000;">    }<br /> </span><span style="color: #008080;">11</span> <span style="color: #000000;"><br /> </span><span style="color: #008080;">12</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> newItem1() {<br /> </span><span style="color: #008080;">13</span> <span style="color: #000000;">        item1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> DataItem();<br /> </span><span style="color: #008080;">14</span> <span style="color: #000000;">    }<br /> </span><span style="color: #008080;">15</span> <span style="color: #000000;"><br /> </span><span style="color: #008080;">16</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> print() {<br /> </span><span style="color: #008080;">17</span> <span style="color: #000000;">        System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">item1: </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> item1.toString());<br /> </span><span style="color: #008080;">18</span> <span style="color: #000000;">        System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">item2: </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> item2.toString());<br /> </span><span style="color: #008080;">19</span> <span style="color: #000000;">    }<br /> </span><span style="color: #008080;">20</span> <span style="color: #000000;"><br /> </span><span style="color: #008080;">21</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {<br /> </span><span style="color: #008080;">22</span> <span style="color: #000000;">        tesRef tr </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> tesRef();<br /> </span><span style="color: #008080;">23</span> <span style="color: #000000;">        tr.print();<br /> </span><span style="color: #008080;">24</span> <span style="color: #000000;">        tr.newItem1();<br /> </span><span style="color: #008080;">25</span> <span style="color: #000000;">        tr.print();<br /> </span><span style="color: #008080;">26</span> <span style="color: #000000;">    }<br /> </span><span style="color: #008080;">27</span> <span style="color: #000000;">}<br /> </span><span style="color: #008080;">28</span> </div> <br /> <br />     以上一D很单的代码Q很Ҏ(gu)看懂。它的运行结果如下:<br /> item1: cn.com.gentek.imatrix.test.DataItem@c17164<br /> item2: cn.com.gentek.imatrix.test.DataItem@c17164<br /> item1: cn.com.gentek.imatrix.test.DataItem@1fb8ee3<br /> item2: cn.com.gentek.imatrix.test.DataItem@c17164<br /> <br />     toString()的结果格式ؓcd@对象?6q制Hash表示。这里我们可以如此理解,是一个指向DataItemcd例化Ӟ在内存中开辟的一块空间的地址标识?br />     在调用函?span style="color: #000000;">tr.newItem1()Q?4行)之前Q?/span>item1和item2所指向的内存空间是相同的。所以在改变item1的同时item2的值势必更q一h变,同理改变item2的内容,item1的内容也会做出相同的改变?span style="color: #000000;">item1.toString()?/span><span style="color: #000000;">item2.toString()的结果正可以说明q一炏V这也说明了Qitem1和item2存储的都是一个内存地址?br />     当调?/span><span style="color: #000000;">tr.newItem1()Q重新实例化item1Q之后item1指向的另一块内存空_而item2保持不变Q指向最初那块内存空间。此Ӟitem1和和item2的内容将是毫不相关的?/span><br /> <br /> <img src ="http://www.aygfsteel.com/zhanjh/aggbug/183755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhanjh/" target="_blank">zhan</a> 2008-03-04 17:33 <a href="http://www.aygfsteel.com/zhanjh/archive/2008/03/04/183755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF web~程:通过enum数组生成 <h:selectOneMenu> 下拉选择列表http://www.aygfsteel.com/zhanjh/archive/2008/03/03/183493.htmlzhanzhanMon, 03 Mar 2008 08:15:00 GMThttp://www.aygfsteel.com/zhanjh/archive/2008/03/03/183493.htmlhttp://www.aygfsteel.com/zhanjh/comments/183493.htmlhttp://www.aygfsteel.com/zhanjh/archive/2008/03/03/183493.html#Feedback3http://www.aygfsteel.com/zhanjh/comments/commentRss/183493.htmlhttp://www.aygfsteel.com/zhanjh/services/trackbacks/183493.html1.       HTML代码

最l实现的效果代码Q如下所C:

<select>

<option selected="selected" value="Monitor">Monitor</option>

<option value="VCR">VCR</option>

<option value="Standard Device">Standard Device</option>

<option value="Smart Device">Smart Device</option>

<option value="Trunk">Trunk</option>

<option value="Standby VCR">Standby VCR</option>

</select>

2.       enum代码

publicenum DeviceType {

    @XmlEnumValue("Monitor")

    MONITOR("Monitor"),

    VCR("VCR"),

    @XmlEnumValue("Standard Device")

    STANDARD_DEVICE("Standard Device"),

    @XmlEnumValue("Smart Device")

    SMART_DEVICE("Smart Device"),

    @XmlEnumValue("Trunk")

    TRUNK("Trunk"),

    @XmlEnumValue("Standby VCR")

    STANDBY_VCR("Standby VCR");

    privatefinal String value;

    DeviceType(String v) {

        value = v;

    }

    public String value() {

        returnvalue;

    }

    publicstatic DeviceType fromValue(String v) {

        for (DeviceType c: DeviceType.values()) {

            if (c.value.equals(v)) {

                return c;

            }

        }

        thrownew IllegalArgumentException(v);

    }

}

3.       JSF标签Q?/span>

<h:selectOneMenu value="#{voutputType.DEVICETYPE}" converter="voutputDeviceTypeConverter">

<f:selectItems value="#{voutput.deviceTypeList}"/>

</h:selectOneMenu>

主要有三个部分组?/span>

(a)     value="#{voutputType.DEVICETYPE}"

?/span>javabean ,voutputType中的DEVICETYPE属性,定html代码?/span><option selected="selected" value="Monitor">的?/span>?/span>

voutputType配置信息?/span>"WebRoot"WEB-INF"faces-config.xmlQ?/span>

<managed-bean>

       <managed-bean-name>voutputType</managed-bean-name>

       <managed-bean-class>

           cn.com.gentek.imatrix.xml.jaxb.voutput.ObjVOutputType

       </managed-bean-class>

       <managed-bean-scope>session</managed-bean-scope>

</managed-bean>

    其中DEVICETYPE属性对应的变量是枚?/span>DeviceType的一个实例?/span>

(b)    converter="voutputDeviceTypeConverter"

cd转换器,在在"WebRoot"WEB-INF"faces-config.xml配置如下Q?/span>

<converter>

    <converter-id>voutputDeviceTypeConverter</converter-id>

    <converter-class>

       cn.com.gentek.imatrix.ui.VoutDeviceTypeConverter

    </converter-class>

</converter>

cn.com.gentek.imatrix.ui.VoutDeviceTypeConverter代码如下Q?/span>

Q实?/span>< select>?/span><option>?/span>Stringcd|?/span>DeviceTypecd之间的{换)

publicclass VoutDeviceTypeConverter implements Converter {

    public Object getAsObject(FacesContext context, UIComponent component, String value) {

       DeviceType result = null;

       if (value == null || value.length() < 1) {

           result = null;

       } else

           result = DeviceType.fromValue(value);

       returnresult;

    }

    public String getAsString(FacesContext context, UIComponent component, Object value) {

       String result = null;

       if (value != null) {

           if (value instanceof DeviceType) {

              DeviceType temp = (DeviceType) value;

              result = temp.value();

           }

       }

       return result;

    }

}

(c)      <f:selectItems value="#{voutput.deviceTypeList}"/>Q重点)

׃deviceTypeList对应变量必须?/span>SelectItemQ?/span>javax.faces.model.SelectItemQ列表,所以有必要?/span>DeviceTypecd实例的值和对应Stringcd|装在一?/span>SelectItem实例中。实C码如下:

ArrayList<SelectItem> deviceTypeList = new ArrayList<SelectItem>();

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

    deviceTypeList.add(new SelectItem(DeviceType.values()[i],

           DeviceType.values()[i].value()));

}



zhan 2008-03-03 16:15 发表评论
]]>
JSF web~程中的JavaBean路径讉K问题http://www.aygfsteel.com/zhanjh/archive/2008/02/29/183003.htmlzhanzhanFri, 29 Feb 2008 09:36:00 GMThttp://www.aygfsteel.com/zhanjh/archive/2008/02/29/183003.htmlhttp://www.aygfsteel.com/zhanjh/comments/183003.htmlhttp://www.aygfsteel.com/zhanjh/archive/2008/02/29/183003.html#Feedback2http://www.aygfsteel.com/zhanjh/comments/commentRss/183003.htmlhttp://www.aygfsteel.com/zhanjh/services/trackbacks/183003.html使用JSF~写webE序的时候,JavaBean无法直接通过相对路径来访问文件。经q一天的研究主要发现两类解决Ҏ(gu)Q一是,通过FacesContextQ二是,通过ClassLoader?/span>

下面通过实例来说明?/span>

首先是介l?/span>webE序目录的大致结构:

D:"......"Tomcat 6.0"webapps"imatrixb ------> E序的更目录

         --META-INF

         --WEB-INF

         ---------------classess

         ---------------------------cn

         ----------------------------------com

         --------------------------------------------……                        ----------->class 文g

         ---------------------------XmlData

         ---------------------------------path-config.xml           Q?/span>1Q?/span>

                  --------------- path-config.xml                                           Q?/span>2Q?/span>

…….

Index.jsp

一Q?/span>FacesContext

获得Q?/span>2Q号path-config.xml文g信息,

代码如下Q?/span>

String partPath=”/ WEB-INF/ path-config.xml”;

1. getRealPath():

FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest rst = (HttpServletRequest)context.getExternalContext().getRequest();
String fullPath=rst.getRealPath(xmlfile); //
获得xml文g的系l\径,xmlfile为相对\?/span>

         采用q个Ҏ(gu)存在一些隐(zhn):比方说对一个打包的应用来说Q是没有RealPath的概늚Q调?/span>getRealPath只会单地q回null?/span>

         2. getResourceAsStream():

FacesContext context = FacesContext.getCurrentInstance();

InputStream xmlStream = context.getExternalContext()

              .getResourceAsStream(xmlfile);

    用于只读的Ş式?/span>

    二:ClassLoader

获得Q?/span>1Q号path-config.xml文g信息,

代码如下Q?/span>

String partPath =”/XmlData/path-config.xml”;

String fullPath=this.getClass().getClassLoader().getResource(partPath).getPath();

//使用的时候还是存在一些问题,无法正常使用Q暂时没有发现解决的办法

InputStream xmlStream=this.getClass().getClassLoader().getResourceAsStream(partPath);

         //用于只读的Ş式下Q通过试能够正常的?/span>



zhan 2008-02-29 17:36 发表评论
]]>
Xml数据配置的WebE序重构(2)--反射http://www.aygfsteel.com/zhanjh/archive/2008/02/26/182265.htmlzhanzhanTue, 26 Feb 2008 09:09:00 GMThttp://www.aygfsteel.com/zhanjh/archive/2008/02/26/182265.htmlhttp://www.aygfsteel.com/zhanjh/comments/182265.htmlhttp://www.aygfsteel.com/zhanjh/archive/2008/02/26/182265.html#Feedback0http://www.aygfsteel.com/zhanjh/comments/commentRss/182265.htmlhttp://www.aygfsteel.com/zhanjh/services/trackbacks/182265.html1.2 反射

1.2.1 学习W记

参考资料:Java 2 核心技?/span>?/span>IQ基知识Q第7版) 5.5 反射

(1) Classc?/span>

    在程序运行期_Javaq行时系l始lؓ所有对象的l护一个被UCؓq行时的cd标识。这个信息保存着每一个对象所有属性的cqV虚拟机利用q行信息选择相应的方法执行?/span>

获取Classcd象的三种Ҏ(gu)

(a)     getClass()

         Employee e;

         …

         Class cl=e.getClass();

         System.out.println(cl.getName()+“  ” +e.getName());

 Result:

         Employee Harry

(b)    forName()

String className= “java.util.Date ”;

Class cl=Class.forName(className);

(c)    .class

  Class cl1=Date.class;

 Class cl2=int.class;

(2) 反射的分析能?/span>

 CZQ?/span>

Employee.java:

publicclass Employee {

    private String name;

    privateintage;

    public String getName() {

        returnname;

    }

    publicvoid setName(String name) {

        this.name = name;

    }

    publicint getSalary() {

        returnage;

    }

    publicvoid setSalary(int salary) {

        this.age = salary;

    }

    public Employee(String name, int salary) {

        this.name = name;

        this.age = salary;

    }

}

Test.java

import java.lang.reflect.Field;

publicclass test {

         publicstaticvoid main(String[] args) throws SecurityException,

                            NoSuchFieldException, IllegalArgumentException,

                            IllegalAccessException {

                   Employee zhanjh = new Employee("zhan jh", 1000);

                   Class<?> cl = zhanjh.getClass();

                   Field f = cl.getDeclaredField("name"); // q回名称?/span>“name”的私有或公有成员Q域Q?/span>

                   f.setAccessible(true); // 非常重要Q否则无法调?/span>f.get(zhanjh)Ҏ(gu)

                   Object v = f.get(zhanjh);// q回zhanjh对象?/span> name成员Q域Q的?/span>

                   System.out.println(v.toString());

         }

}

/*

 * q行l果Q?/span> zhan jh

 */



zhan 2008-02-26 17:09 发表评论
]]>
Xml数据配置的WebE序重构(1)---Jaxbhttp://www.aygfsteel.com/zhanjh/archive/2008/02/25/182046.htmlzhanzhanMon, 25 Feb 2008 09:09:00 GMThttp://www.aygfsteel.com/zhanjh/archive/2008/02/25/182046.htmlhttp://www.aygfsteel.com/zhanjh/comments/182046.htmlhttp://www.aygfsteel.com/zhanjh/archive/2008/02/25/182046.html#Feedback0http://www.aygfsteel.com/zhanjh/comments/commentRss/182046.htmlhttp://www.aygfsteel.com/zhanjh/services/trackbacks/182046.html阅读全文

zhan 2008-02-25 17:09 发表评论
]]>
interfaceshttp://www.aygfsteel.com/zhanjh/archive/2007/12/26/170672.htmlzhanzhanWed, 26 Dec 2007 11:07:00 GMThttp://www.aygfsteel.com/zhanjh/archive/2007/12/26/170672.htmlhttp://www.aygfsteel.com/zhanjh/comments/170672.htmlhttp://www.aygfsteel.com/zhanjh/archive/2007/12/26/170672.html#Feedback0http://www.aygfsteel.com/zhanjh/comments/commentRss/170672.htmlhttp://www.aygfsteel.com/zhanjh/services/trackbacks/170672.html
上午完成thinking Java中关于Interfaces章节的内宏V下面是该章节中关于"Interfaces and factories"的例?br /> package com.zhanjh.thinkingjava.interfaces;

interface Service{
    void method1();
    void method2();
}

interface ServiceFactory{
    Service getService();
}

class Implementation1 implements Service{
    public Implementation1() {
        // TODO Auto-generated constructor stub
    }
   
    public void method1(){
        System.out.println("Implementation1 method1");
    }
    public void method2(){
        System.out.println("Implementation1 method2");
    }
}

class Implementation1Factory implements ServiceFactory{
    public Service getService(){
        return new Implementation1();
    }
}

class Implementation2 implements Service{
    public Implementation2() {
        // TODO Auto-generated constructor stub
    }
   
    public void method1(){
        System.out.println("Implementation2 method1");
    }
    public void method2(){
        System.out.println("Implementation2 method2");
    }
}

class Implementation2Factory implements ServiceFactory{
    public Service getService(){
        return new Implementation2();
    }
}

public class Factories{
    public static void serviceConsumer(ServiceFactory fact){
        Service s=fact.getService();
        s.method1();
        s.method2();
    }
    public static void main(String[] args){
        serviceConsumer(new Implementation1Factory());
        serviceConsumer(new Implementation2Factory());
    }
}
ȝQabstract class和interface是Java语言中对于抽象类定义q行支持的两U机Ӟabstract class和interface之间在对于抽象类定义的支持方面具有很大的怼性。目前我对他们区分的Ҏ(gu)大致如下Q?br /> 1Qinterface可以多重实现Q而abstract class只能单一l承
2Qabstract class不一定只有抽象的Ҏ(gu)Qabstract methodQ,它也可以包含具体的方法(concrete methodQ。而interface不能包含Ҏ(gu)的实玎ͼimplementationQ。所以在E序设计的时候,能用inteface的时候尽量不要用abstract class?br />
下午
     查找关于EJB的资料,没头l?br />      jaxb入门学习?br />      xjcQ将xsd文g转换为Java的小工具Q工L(fng)使用。可以创Z个bat文g处理下面的命令:
    xjc -d "D:"eclipse"workspace"JaxbTest"src" -p "edu.jlu.xml" "D:"eclipse"workspace"JaxbTest"schema"messages.xsd"
其中D:"eclipse"workspace"JaxbTest"src为原文g的目录,edu.jlu.xml为生成Javacȝ包名QD:" eclipse"workspace"JaxbTest"schema"messages.xsd为xml schema文g的\径?br />


zhan 2007-12-26 19:07 发表评论
]]>
վ֩ģ壺 ͭ| ƽ| Ľ| ̩| ˳| | ɽ| | | | ƽ| ɽ| ղ| ˹| | | ƽ½| | н| ƽ| | ܱ| | | Ȫ| Ͳ| | | | ̶| | ӱʡ| ɽ| | | ƽ½| | | «Ϫ| ɽ| ľ|