|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是net网页编程beans,谢谢。
读者也许会奇异为何必要一个对象从它的序列化形态中恢复。举个例子来讲,假定我们序列化一个对象,并经由过程收集将其作为文件传送给另外一台呆板。此时,位于另外一台呆板的程序能够只用文件目次来从头机关这个对象吗?
回覆这个成绩的最好办法就是做一个实行。上面这个文件位于本章的子目次下:- //:Alien.java
- //Aserializableclass
- importjava.io.*;
- publicclassAlienimplementsSerializable{
- }///:~
复制代码
用于创立和序列化一个Alien对象的文件位于不异的目次下:- //:FreezeAlien.java
- //Createaserializedoutputfile
- importjava.io.*;
- publicclassFreezeAlien{
- publicstaticvoidmain(String[]args)
- throwsException{
- ObjectOutputout=
- newObjectOutputStream(
- newFileOutputStream("file.x"));
- Alienzorcon=newAlien();
- out.writeObject(zorcon);
- }
- }///:~
复制代码
该程序并非捕捉和把持背例,而是将背例复杂、间接地传送到main()内部,如许便能在命令行呈报它们。
程序编译并运转后,将了局发生的file.x复制到名为xfiles的子目次,代码以下:- //:ThawAlien.java
- //Trytorecoveraserializedfilewithoutthe
- //classofobjectthatsstoredinthatfile.
- packagec10.xfiles;
- importjava.io.*;
- publicclassThawAlien{
- publicstaticvoidmain(String[]args)
- throwsException{
- ObjectInputStreamin=
- newObjectInputStream(
- newFileInputStream("file.x"));
- Objectmystery=in.readObject();
- System.out.println(
- mystery.getClass().toString());
- }
- }///:~
复制代码
该程序能翻开文件,并乐成读取mystery对象中的内容。但是,一旦实验查找与对象有关的任何材料——这请求Alien的Class对象——Java假造机(JVM)便找不到Alien.class(除非它恰好在类路径内,而本例理应相反)。如许就会失掉一个名叫ClassNotFoundException的背例(一样地,若非可以校验Alien存在的证据,不然它即是消散)。
恢复了一个序列化的对象后,假如想对其做更多的事变,必需包管JVM能在当地类路径大概因特网的其他甚么中央找到相干的.class文件。
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net网页编程也不过3,4本书足以,这就是区别。 |
|