【转自:http://blog.sina.com.cn/s/blog_6d9ecdef0100nyxv.html】
简述:
java中方法重载可以实现参数不同自动匹配对应方法。但现实中也存在这种问题。普通传参对于形如下面的方法,却显得臃肿而失优雅。
Map getRealLine( int left, int top String color)//others method
Map getRealLine( int left, int right, int top , int bottom, String color)Map getRealLine( int left, int right, int top , int bottom, String color, String rgb)Map getRealLine( int left, int right, int top , int bottom, String color, String rgb, String hh)Map getRealLine( int left, int right, int top , int bottom, String color, String rgb, String hh, String flowLine)
引导:
1,正如上述例子,假设所有的情况都包含了。突然有一天,绘制图线功能扩展了,还可以给定点的名称String title。这下,我们又要添加一系列的方法。
注:可能有高手会说,为什么不给一个方法,里面参数是全的(最大化参数)。如果不给的时候置0,或者置null。对这一说法,建议质疑一下JDK中的一些类,定有所获。
2,假设如果有一种机制,可以如下来定义,将为带来方便。
Map getRealLine( int[] posiontElements, String[] descriptions)
同时在使用时这样调用他:
//备参
int[] intArr = new int[]{"1", "2", "3", "4"};String[] strArr = new String[]{"read", "#994e8a"};//调用
this.obj.getRealLine( intArr , strArr );
3,仅仅如此,那不就是采用数组传参了。实践中我们发现每次用数组的时候,都有个准备参数的过程,一般情况下,又只用一组参数中的一个,比方说color。那么每次创建数组、初始化数组,传参,显示很繁锁。比较优雅的作法是,传进去的参数都自动转为数组形式。这样,在调用方法的时候,留白、置空、单串、多串、数组,都可以被接收,可以大大减轻重复准备数据的体力劳动。测试代码如下,通过这些代码,能对“String… args”有个大体的了解。
public class StrParamTest {public static void main(String[] args) {String[] strings = new String[]{"1","2"};StrParamTest.sayHi(strings);StrParamTest.sayHi("A");
StrParamTest.sayHi("O", "P");StrParamTest.sayHi();StrParamTest.sayHi(null);}private static void sayHi( String... strings ){System.out.println("----------" + strings);
if ( strings != null ) {
for (String string : strings) {
System.out.println(string);}}else {
System.out.println("=========null");
}}}
结果如下:
----------[Ljava.lang.String;@de6ced12----------[Ljava.lang.String;@c17164A----------[Ljava.lang.String;@1fb8ee3OP----------[Ljava.lang.String;@61de33----------null=========null
4,断点调试后发现正是想要的东西。开心吧 ~。=
小结:
1,String… args 传参方式,为调用前的准备省了许多气力;
2,一个方法里,只能有一个”…”这样的可变参数,而且置于最后(方法重载匹配策略原因);
3,一个方法的参数很难考虑完整或者组内相同类型参数很多,采用此方法,可使代码更加优雅,同时,修改时只需改动实现类即可。
相关推荐
java Map 转为 Obj Obj 转为 Map
java实现将OBJ转换为3Dtiles
高效的JSON与Object互转的工具源代码,如果JSON数据未按...2. Object obj = JSONTool.convertJsonToObject(jsonStr); 缺点:对于集合(Collection,非Map)类数据结构,不能在集合中包含其他集合对象,但是可以包含数组。
java加载obj,stl模型资源,html页面展示。 部署即可运行,提供基础数据样例展示
java3D加载Obj文件 obj文件是3D模型文件格式。由Alias|Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准,适合用于3D软件模型之间的互导,也可以通过Maya读写。
python-javaobj python-javaobj 是一个 python 库,它提供了读取和写入(写入当前是 WIP)Java 对象的函数,序列化或将被ObjectOutputStream反序列化。 这种对象表示形式是 Java 世界中的标准数据交换格式。 java...
Java class that reads and converts a wavefront .obj 3d model file to java object. The result object will contain all the necessary data for render of the 3d model with OpenGL ES on for example Android...
Java将数据存储在obj文件中并读取出来,数据存储在label.obj,通过读取和生成文件流,得到对象输出流的方法来存储和读取文件对象,读取对象后关闭文件流并输出提示信息。。
Object类是Java中所有类的基类。Java中所有的类都是直接或间接继承Object类。 Object类的引用数据类型变量可以保存Java中任意数据类型空间的首地址。 Object类中规定了一些方法,可供子类使用。 (1).String ...
本实例实现将3d文件pro 或其它格式的文件加载进applet中,可以使用鼠标控制模型的查看角度,进行旋转
通过java3d加载obj模型,已经成功的测试过,都可以加载。
实现的是java3D调用OBJ图形文件的示例。
java动态代理 public class HireProxy implements InvocationHandler { //被代理的真实角色 private Object obj; public HireProxy(Object obj) { super(); this.obj = obj; } //第二个参数method,被...
Java 开发所需json的jar包,项目对象转json格式, Map,Object> map=HashMap,Object>(); map.put("sex","man"); toJson(map); /** * 将得到的数据以json格式进行输出,如果对象不存在则输出空字符串 * * @param ...
java3d导入OBJ文件并加入材质的一个完整例子
java实现obj模型转换成支持cesium支持的gltf文件和b3dm文件,生成tileset.json,和为b3dm模型添加属性信息。https://pan.baidu.com/s/10S5VKVehrI6Ozc-8yINvwA 提取码:fdwk
c#遍历obj属性用例,非常实用的文档 网络搜集
revit导出obj格式,生成三个文件output.obj
可以读取obj格式的文件到matlab空间中,obj格式的文件中,只能包含点和面的信息
Revit插件将rvt转换为obj