java规范(一)------方法设计---返回多参数的方法怎么封装
来源:互联网 发布:淘宝营销活动图片 编辑:程序博客网 时间:2024/05/22 06:10
两个方法
一是新建对象包含多参数
二是用map封装
把多参数新建为对象符合面向对象编程的思维,也可以使代码整洁。
使用map则是方便,不需要新建对象。
两种方法视情况使用。
假如我们有2个变量count和content需要经过一个方法里改变它的值我们可以用下面的方法:
main{int count=0;String content=“”;changeValue(count,content); System.out.println(count); System.out.println(content);}private void changeValue(int count,String content){ count++;content="new content"; }
但是这种写法很不友好, 我们最好不用返回值当作参数。因为这样变量的作用域不明显,而且容易混乱。
最好是 每个方法返回我们需要改成的值。
但是如果涉及到多参数参与变化的方法时怎么办呢?
可以使用map来进行封装再一起返回:
main{ Map<String, Object> data =changeValue(count,content); System.out.println(data.get("count")); System.out.println(data.get("content"));}private Map<String, Object> changeValue(int count,String content){ return MapBuilder .forType(String.class, Object.class) .with("count", count++) .with("content", "new content") .build(); }
package com.test.util;import java.util.Collections;import java.util.HashMap;import java.util.Map;/** * Map构造器 * * */public final class MapBuilder<K, V> { private Map<K, V> map; private MapBuilder() { map = new HashMap<K, V>(); } /** * create a builder * * @return */ public static <K, V> MapBuilder<K, V> create() { return new MapBuilder<K, V>(); } /** * create a builder * * @param kClass key type * @param vClass value type */ public static <K, V> MapBuilder<K, V> forType(Class<K> kClass, Class<V> vClass) { return new MapBuilder<K, V>(); } /** * create a builder and put a kv pair. * * @param key * @param value * @return */ public static <K, V> MapBuilder<K, V> createWith(K key, V value) { return new MapBuilder<K, V>().with(key, value); } /** * put 键值对 * * @param key 键 * @param value 值 * @return */ public MapBuilder<K, V> with(K key, V value) { map.put(key, value); return this; } /** * 方法名称意义不明,放弃使用<br> * 兼容过时代码,暂不删除。 * * @param key * @param value * @return */ @Deprecated public static <K, V> MapBuilder<K, V> makeNew(K key, V value) { return createWith(key, value); } /** * put 键值对 {@link #with(Object, Object)} * * @param key 键 * @param value 值 * @return */ @Deprecated public MapBuilder<K, V> make(K key, V value) { return with(key, value); } /** * 构造Map对象 * * @return 不可再修改的map */ public Map<K, V> build() { return Collections.unmodifiableMap(map); } /** * 返回原生Map对象 * * @return */ public Map<K, V> original() { return map; }}
0 0
- java规范(一)------方法设计---返回多参数的方法怎么封装
- java返回多参数方法与方法的多参数传递
- javascript怎么封装方法
- WebService传多个参数和返回多个参数的方法
- 【转】DWR中Java方法的参数及返回值
- DWR中Java方法的参数及返回值
- DWR中Java方法的参数及返回值上篇
- java method TestJava4_9 方法的参数与返回值
- java中有无参数和返回值的方法
- Java 带参数带返回值方法的使用
- Java方法的本质、形式参数、返回值
- java方法参数和返回值
- Java方法参数(一)
- Java一对多结构的封装方法
- Java 返回数组或集合的方法设计
- 封装多次调用的方法,参数不同
- JNI 返回结构体参数的方法
- 返回参数的几种方法
- Linux内核学习笔记九——内核内存管理方式
- 移动 Ubuntu16.04 桌面左侧的启动器到屏幕底部
- Neo4j:Index索引
- Android 开源项目集合-不定期更新
- Linux内核学习笔记十——虚拟文件系统概念
- java规范(一)------方法设计---返回多参数的方法怎么封装
- 166. Fraction to Recurring Decimal
- centos之lnmp
- 指针和字符串常量
- 378. [LeetCode]Kth Smallest Element in a Sorted Matrix
- c++怎么求一个带空格字符串长度
- 机器学习的前世今生:一段波澜壮阔的历史
- mysql 主从复制配置
- 最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。