|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?
JavaBean的属性与一样平常Java程序中所指的属性,大概说与一切面向对象的程序计划言语中对象的属性是一个观点,在程序中的详细表现就是类中的变量。在JavaBean计划中,依照属性的分歧感化又细分为四类:Simple,Index,Bound与Constrained属性。
1.1Simple属性
一个复杂属性暗示一个陪伴有一对get/set办法(C言语的历程或函数在Java程序中称为"办法")的变量。属性名与和该属性相干的get/set办法名对应。比方:假如有setX和getX办法,则暗指有一个名为"X"的属性。假如有一个办法名为isX,则一般暗指"X"是一个布尔属性(即X的值为true或false)。比方鄙人面这个程序中:
publicclassalden1extendsCanvas{
stringourString="Hello";//属性名为ourString,范例为字符串
publicalden1(){ //alden1()是alden1的机关函数,与C++中机关函数的意义不异
setBackground(Color.red);
setForeground(Color.blue);
}
/*"set"属性*/
publicvoidsetString(StringnewString){
ourString=newString;
}
/*"get"属性*/
publicStringgetString(){
returnourString;
}
}
1.2Indexed属性
一个Indexed属性暗示一个数组值。利用与该属性对应的set/get办法可获得数组中的数值。该属性也可一次设置或获得全部数组的值。例:
publicclassalden2extendsCanvas{
int[]dataSet={1,2,3,4,5,6};//dataSet是一个indexed属性
publicalden2(){
setBackground(Color.red);
setForeground(Color.blue);
}
/*设置全部数组 */
publicvoidsetDataSet(int[]x){
dataSet=x;
}
/*设置数组中的单个元素值*/
publicvoidsetDataSet(intindex,intx){
dataSet[index]=x;
}
/*获得全部数组值*/
publicint[]getDataSet(){
returndataSet;
}
/*获得数组中的指定元素值*/
publicintgetDataSet(intx){
returndataSet[x];
}
}
1.3Bound属性
一个Bound属性是指当该种属性的值产生变更时,要关照别的的对象。每次属性值改动时,这类属性就焚烧一个PropertyChange事务(在Java程序中,事务也是一个对象)。事务中封装了属性名、属性的原值、属性变更后的新值。这类事务是传送到别的的Bean,至于吸收事务的Bean应做甚么举措由其本人界说。
.1是一个复杂Bound属性表示图,当PushButton的background属性与Dialog的background属性bind时,若PushButton的background属性产生变更时,Dialog的background属性也产生一样的变更。例:
publicclassalden3extendsCanvas{
StringourString="Hello";//ourString是一个bound属性
privatePropertyChangeSupportchanges=newPropertyChangeSupport(this);
/**注:Java是纯面向对象的言语,假如要利用某种办法则必需指明是要利用哪一个对象的办法,鄙人面的程序中要举行焚烧事务的操纵,这类操纵所利用的办法是在PropertyChangeSupport类中的。以是下面声明并实例化了一个changes对象,鄙人面将利用changes的firePropertyChange办法来焚烧ourString的属性改动事务。*/
publicvoidsetString(stringnewString){
StringoldString=ourString;
ourString=newString;
/*ourString的属性值已产生变更,因而接着焚烧属性改动事务*/
changes.firePropertyChange("ourString",oldString,newString);
}
publicStringgetString(){
returnourString;
}
/**以下代码是为开辟工具所利用的。我们不克不及预知alden3将与哪些别的的Bean组分解为一个使用,没法预知若alden3的ourString属性产生变更时有哪些别的的组件与此变更有关,因此alden3这个Bean要预留出一些接口给开辟工具,开辟工具利用这些接口,把别的的JavaBean对象与alden3挂接。*/
publicvoidaddPropertyChangeListener(PropertyChangeLisenerl){
changes.addPropertyChangeListener(l);
}
publicvoidremovePropertyChangeListener(PropertyChangeListenerl){
changes.removePropertyChangeListener(l);
}
<p>经由过程下面的代码,开辟工具挪用changes的addPropertyChangeListener办法把别的JavaBean注册进ourString属性的监听者行列l中,l是一个Vector数组,可存储任何Java对象。开辟工具也可以使用changes的removePropertyChangeListener办法,从l中刊出指定的对象,使alden3的ourString属性的改动不再与这个对象有关。固然,当程序员手写代码体例程序时,也可间接挪用这两个办法,把别的Java对象与alden3挂接。
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net网页编程有没有机会赶上java。 |
|