关于JavaBean概念和用法【菜鸟上路】
之前有在一个帖子中提出关于底下结构的实现
想实现如下结构,在Java中如何定义类:
<PersonInfo>
<CountryName>String|中国</CountryName>
<ProvinceName>String|江苏省</ProvinceName>
<CityName>String|南京市</CityName>
<Age>Integer|28</Age>
<CourseInfo>
<CourseId>Integer|1001</CourseId>
<CourseName>String|Java</CourseName>
<PassOrNot>Boolean|true</PassOrNot>
<RemarkInfo>
<Mark>Double|60.5</Mark>
<PassDate>Date|2004-12-12</PassDate>
</RemarkInfo>
<CourseInfo/>
<CourseInfo>
<CourseId>Integer|1002</CourseId>
<CourseName>String|C++</CourseName>
<PassOrNot>Boolean|true</PassOrNot>
<RemarkInfo>
<Mark>Double|70.5</Mark>
<PassDate>Date|2005-12-12</PassDate>
</RemarkInfo>
<CourseInfo/>
...
</PersonInfo>
-----------------------------------------
根据f_acme(沧海一声笑) 的回复
class RemarkInfo
{
private double mark;
private Date passDate;
}
class CourseInfo
{
private int courseId;
private String courseName;
private boolean passOrNot;
private RemarkInfo remarkInfo;
}
class Person
{
private String country;
private String province;
private String city;
private int age;
pravate CourseInfo[] courseInfo;
}
1、请问这种是JavaBean吗??
2、我现在想实现的是:
* 写个方法,如HandleExm(JavaBean){},传人参数是上面结构的JavaBean,完成某个业务逻辑操作
* 定义的JavaBean可以自动生成Setters()和Getters()方法(是不是直接源码自动生成即可?)
* 通过传人的参数如果获取JavaBean的成员的名称、类型?如如何获取PersonInfo的CountryName和它的类型(String)
最好能提供例子代码,谢谢!
问题点数:100、回复次数:22Top
1 楼4031(请教)回复于 2006-03-09 09:47:34 得分 0
关于取PersonInfo的数据可以根据PersonInfo.getters()方法获取,如果获取成员 CountryName 这个名字(CountryName)和成员类型(String),如何操作,因为业务逻辑里需要从传人的参数(JavaBean)中提取三样信息:成员名称列表、成员所对应的类型列表、成员所对应的数值,谢谢!Top
2 楼pdvv(花猫)回复于 2006-03-09 11:23:14 得分 30
JavaBean没有固定样式要求,就是一段可以执行的java程序,你上面给出的写法更多是主要是作为一种结构存储你的数据,方便传递,但是你还需要增加设置、获取的方法,即get、set。
比如:
class RemarkInfo
{
private double mark;
private Date passDate;
public double getMark(){
return this.mark;
}
public void setMark(double d){
this.mark = d;
}
}
就是说,对于RemarkInfo的每一个属性要提供访问方法,当然如果嫌麻烦很多IDE可以自动生成。Top
3 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-03-09 11:47:54 得分 40
JavaBean 说白一点就是java类,
不过一般的java类要成为JavaBean符合以下条件
1.公共无参数的构造函数
2.每一个属性都要有setter,getter方法
3.实现Serializable接口
public class PersonInfo implements java.io.Serializable {
private String CountryName;
private String ProvinceName;
private String CityName;
private int Age;
public PersonInfo() {
super();
// TODO Auto-generated constructor stub
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
public String getCityName() {
return CityName;
}
public void setCityName(String cityName) {
CityName = cityName;
}
public String getCountryName() {
return CountryName;
}
public void setCountryName(String countryName) {
CountryName = countryName;
}
public String getProvinceName() {
return ProvinceName;
}
public void setProvinceName(String provinceName) {
ProvinceName = provinceName;
}
}
/////////////////以上就是一个JavaBean 符合三个条件
操作的时候
HandleExm(PersonInfo person){
int age = person.getAge()
通过get set 方法操作javabean
},Top
4 楼treeroot(旗鲁特)回复于 2006-03-09 12:20:47 得分 0
up
Top
5 楼DeluxWorld(曾经的你)回复于 2006-03-09 12:57:41 得分 5
可以把bean理解成一些相关数据组成的容器,你构造了这个容器然后通过它去完成
一些操作~Top
6 楼4031(请教)回复于 2006-03-09 13:11:41 得分 0
谢谢各位大侠!
请问interpb(曾曾胡) ,
implements java.io.Serializable 这是是什么意思?手工加的还是创建是自动生成的?
关于数据存储这一块已经明白了,现在就是关于以下的名称和类型如何通过JavaBean获取,谢谢!
* 通过传人的参数如果获取JavaBean的成员的名称、类型?如如何获取PersonInfo的CountryName和它的类型(String)
Top
7 楼4031(请教)回复于 2006-03-09 13:15:14 得分 0
还有一个就是创建Class时abstract,final选项什么时候使用?功能是什么?谢谢!Top
8 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-03-09 13:21:55 得分 10
这是一个标志接口,不含任何方法
是要你自己手工加上
只是表示实现这个接口的类的对象可以被序列化
关于序列化的概念自己去看看资料
/////////////////////////////////////
* 通过传人的参数如果获取JavaBean的成员的名称、类型?如如何获取PersonInfo的CountryName和它的类型(String)
难道你不知道传入参数具体是什么JavaBean吗
这样 person.getCountryName()
就可以获得了
把意思说清楚
Top
9 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-03-09 13:22:40 得分 0
abstract 声明一个抽象类
final 声明一个不能被继承的类Top
10 楼4031(请教)回复于 2006-03-09 14:54:09 得分 0
结构知道,我是想做成一个通用的,目前传人的是固定结构的JavaBean,以后可以不管是什么结构,一个一个成员取出来,然后根据成员的类型来做下一步的处理,比如
取传人的PersonInfo信息时,直接通过.getCountry()获取国家的信息,如果想取成员的名称country和类string如何处理,最终目的是为了以后不过传人的JavaBean是什么结构,都可以把JavaBean的成员名称、类型、值给取出来~谢谢!
Top
11 楼4031(请教)回复于 2006-03-09 16:45:58 得分 0
再顶一下,谢谢!Top
12 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-03-09 17:55:43 得分 15
那就用反射吧
Class.getMethods()
然后invoke
自己看看apiTop
13 楼nirendao(雷老虎)回复于 2006-03-09 17:55:53 得分 0
upTop
14 楼aywrenyue(基本功修炼中……)回复于 2006-03-09 18:36:14 得分 0
UPTop
15 楼kevin1236()回复于 2006-03-09 19:15:32 得分 0
这是OO的问题,你可以创建一个类,类里有你所要的属性和方法,在其他地方直接new一个对象调用就ok拉Top
16 楼universe01(未知软体)回复于 2006-03-09 20:00:07 得分 0
反射也许会更合适.Top
17 楼fruitskep(水果篮子)回复于 2006-03-09 22:10:48 得分 0
看半天没看懂4031(请教)到底什么意思??你是要写一个struts吗?还是servlet?Top
18 楼bbbbcccc()回复于 2006-03-10 16:48:58 得分 0
http://valenhua.go3.icpcn.com/Top
19 楼Nowish(看我能忍耐多久)回复于 2006-03-10 17:14:05 得分 0
关注
Top
20 楼tony817991(tao)回复于 2006-03-10 17:43:43 得分 0
uuuuuuu... UPTop
21 楼21bird(世纪笨鸟:csdn的blog啊啥时能不出错?!)回复于 2006-03-11 09:15:44 得分 0
我看楼主似乎要用bean写个com对象,哈哈~~~Top
22 楼wizardblue()回复于 2006-03-11 09:31:20 得分 0
以下引用楼主的原话
-------------------------------------------------------------------------
"结构知道,我是想做成一个通用的,目前传人的是固定结构的JavaBean,以后可以不管是什么结构,一个一个成员取出来,然后根据成员的类型来做下一步的处理,比如
取传人的PersonInfo信息时,直接通过.getCountry()获取国家的信息,如果想取成员的名称country和类string如何处理,最终目的是为了以后不过传人的JavaBean是什么结构,都可以把JavaBean的成员名称、类型、值给取出来~谢谢!"
--------------------------------------------------------------------------
这种我想应该用反射来做了吧?Top




