首页 文章 精选 留言 我的

精选列表

搜索[转换工具],共10000篇文章
优秀的个人博客,低调大师

android XMl 解析神奇xstream 二: 把对象转换成xml

前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1、Javabeen 代码 package com.android10; public class Product { private String name ; private String age ; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } } 2、操作实例 package com.android10; import android.app.Activity; import android.os.Bundle; import com.thoughtworks.xstream.XStream; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView( R.layout.activity_main ); Product product = new Product() ; product.setName( "jhon" ) ; product.setAge( "30" ); System.out.println("sss " + product.getName() + product.getAge() ); //把对象转化为 XML XStream xstream1 = new XStream(); String string = xstream1.toXML( product ) ; System.out.println( "sss"+ string ); //把对象转化为 XML,并且设置别名 XStream xstream2 = new XStream(); xstream2.alias( "blog" , Product.class) ; //修改别名 String string2 = xstream2.toXML( product ) ; System.out.println( "sss"+ string2 ); } } 3、运行效果 <com.android10.Product> <age>30</age> <name>jhon</name> </com.android10.Product> <blog> <age>30</age> <name>jhon</name> </blog> 4、注意事项 在测试的时候,发现 System.out.println( "sss"+ string ); 和 System.out.println( "sss"+ string2 ); 输出的是: sss<com.android10.Product>sss<blog> 开始以为是哪里写错了,最后在 debug 断点调试的时候,发现 string 的值: <com.android10.Product> <age>30</age> <name>jhon</name> </com.android10.Product> 得出的结论是,eclipse控制台无法输出 xml格式的 字符串 5、项目下载 http://download.csdn.net/detail/yanzi2015/8798893

优秀的个人博客,低调大师

scala中trait和abstract class在隐式转换中的区别

说半天还不如看一点代码更清楚问题之所在: object ImplicitObject3 { def main(args: Array[String]): Unit = { def sum[A](xs:List[A])(implicit st:SubTemplate[A]):A = { if(xs.isEmpty) st.unit else st.add(xs.head,sum(xs.tail)) } implicit object SubTemplateImplicitIntValue extends SubTemplate[Int] { override def unit: Int = 0 override def add(x: Int, y: Int): Int = x + y } implicit object SubTemplateImplicitStringVlaue extends SubTemplate[String] { override def unit: String = "" override def add(x: String, y: String): String = x + y } println(sum(List(1,2,3,4,5))) println(sum(List("abc","efg","hijk"))) } } trait Template[A] { def add(x:A,y:A):A } trait SubTemplate[A] extends Template[A] { def unit:A } 编译正确,执行时:在类加载器加载时出现异常。但是将二个trait放在object ImplicitObject3中,不管是放在main的前面还是后面都执行OK: object ImplicitObject3 { trait Template[A] { def add(x:A,y:A):A } trait SubTemplate[A] extends Template[A] { def unit:A } def main(args: Array[String]): Unit = { def sum[A](xs:List[A])(implicit st:SubTemplate[A]):A = { if(xs.isEmpty) st.unit else st.add(xs.head,sum(xs.tail)) } implicit object SubTemplateImplicitIntValue extends SubTemplate[Int] { override def unit: Int = 0 override def add(x: Int, y: Int): Int = x + y } implicit object SubTemplateImplicitStringVlaue extends SubTemplate[String] { override def unit: String = "" override def add(x: String, y: String): String = x + y } println(sum(List(1,2,3,4,5))) println(sum(List("abc","efg","hijk"))) } } 如果将二个trait改为abstract class形式,定义在object ImplicitObject3之外执行也OK: object ImplicitObject3 { def main(args: Array[String]): Unit = { def sum[A](xs:List[A])(implicit st:SubTemplate[A]):A = { if(xs.isEmpty) st.unit else st.add(xs.head,sum(xs.tail)) } implicit object SubTemplateImplicitIntValue extends SubTemplate[Int] { override def unit: Int = 0 override def add(x: Int, y: Int): Int = x + y } implicit object SubTemplateImplicitStringVlaue extends SubTemplate[String] { override def unit: String = "" override def add(x: String, y: String): String = x + y } println(sum(List(1,2,3,4,5))) println(sum(List("abc","efg","hijk"))) } } abstract class Template[A] { def add(x:A,y:A):A } abstract class SubTemplate[A] extends Template[A] { def unit:A } 为什么会有这样的现象,原因是什么呢??????????????????????? 当我在object ImplicitObject3外面定义二个trait之外,还在二个trait同级定义了一个继承自SubTemplate[A]的abstract class类,同时将main中二个implicit object继承的父改为这个抽象类,则一切都OK了。这种情况下,实验OK,其实原因好理解: object ImplicitObject3 { def main(args: Array[String]): Unit = { def sum[A](xs:List[A])(implicit st:SubTemplate[A]):A = { if(xs.isEmpty) st.unit else st.add(xs.head,sum(xs.tail)) } implicit object SubTemplateImplicitIntValue extends abstractTemplate[Int] { override def unit: Int = 0 override def add(x: Int, y: Int): Int = x + y } implicit object SubTemplateImplicitStringVlaue extends abstractTemplate[String] { override def unit: String = "" override def add(x: String, y: String): String = x + y } println(sum(List(1,2,3,4,5))) println(sum(List("abc","efg","hijk"))) } } trait Template[A] { def add(x:A,y:A):A } trait SubTemplate[A] extends Template[A] { def unit:A } abstract class abstractTemplate[A] extends SubTemplate[A] 有一次无意中,我将二个trait放在另一个单独的scala文件中,然后我编译工程然后调试,不成功。鬼使神差地在main的最开头import SubTemplate一次,居然成功了。我将磁盘上所有class文件都删除了再编译工程却又不成功。然后再去掉import,单独编译那个scala文件,再编译工程却又成功执行代码了。总结来看:这是由于IDEA造成class文件与源代码不一致的原因

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册