我们说这个内部类依附于它的外部类而存在,可能的原因有:
1、不可能为其他的类使用;
2、出于某种原因,不能被其他类引用,可能会引起错误。
3、当前的类过大,比如某个方法,里面写了非常多的代码,需要重构,如果你想抽象到另外一个类里面,那么不妨考虑一下内部类,因为,这些代码是从当前类抽象出来的,只被当前类所使用,那么用内部类实现也是很好的。下面我们以一个大家熟悉的例子来说明。
这段时间做电信的短信下发的项目,需要对上行用户的手机号做特殊处理,然后下发短信,那么主要功能是下短信,但是在下发之前,需要对用户号码做出处理,满足下面下短信的时候使用。
public class SendSms implements SpInfo
{
public String sendSms(String userID,String productID,int OPType)
{
String res = null;
。。。
SendSms.AddressBean ab = new SendSms.AddressBean();//获得内部类的实例
//用内部类来加工处理用户号码
org.apache.axis.types.URI[] addressesuri = ab.getDownAddress(userID);
。。。
//下面开始组织soapheader,此处也可以用内部类来实现的。
RequestSOAPHeader soapHeader = DownHeader.downHeader_ismp(productID, addressesuri);
。。。
SMS downsms = new SMS();
res = downsms.sendSMS(addressesuri, senderName, charging, down_message,
receiptRequest, soapHeader);
return res;
}
//内部类----此类只被当前的外部类所使用
public class AddressBean
{
public org.apache.axis.types.URI[] getDownAddress(String senderAddress)
{
org.apache.axis.types.URI[] addressesuri = null;
String proaddress = "tel:" + senderAddress;
String[] address = new String[] {proaddress};
addressesuri = new org.apache.axis.types.URI[address.length];
try
{
for (int i = 0; i < address.length; i++)
{
addressesuri[i] = new URI(address[i]);
}
}catch(Exception ex)
{
ex.printStackTrace();
}
return addressesuri;
}
}
}
分享到:
相关推荐
Java内部类是Java言语的一个很重要的概念,《Java编程思想》花了很大的篇幅来讲述这个概念。但是我们在实践中很少用到它...本文试图谈一谈让这个幕后英雄也有用武之地的四个场景,希望引起大家对使用Java内部类的兴趣。
内部类在Java中广泛应用于各种场景,特别是当一个类与其外部类有紧密联系并且仅在该外部类中使用时。比如,你可以在一个类中定义一个私有的内部类,用于实现某种算法或者提供一个特定的服务。内部类的作用域仅限于其...
* 存在多种缓存实现,缓存对象只需要一个,但是不保证什么情况下使用什么类型 * 此时可以采用享元模式,“元” 理解为 “同一地址对象” * * 源码应用 * Integer 问题 * 使用场景:String 类型,连接池 * ...
threejs切换场景 实现图朴上的切换效果, 而不是相机的视角移动,不浪费性能,非常棒的效果,代码简单,实现思路简单,适合新手开发项目中,遇到当前视角切换到模型内部 等效果 , threejs scene的切换 , 视角的...
简单易用:这两个方法都是静态方法,可以直接在类内部或外部任何地方调用,无需创建实例。 正则表达式高效:利用Java的正则表达式快速完成匹配和替换,性能较好。 适应性强:能够处理大多数常见的驼峰和下划线...
先在类中创建一个对象 (联想到封装) => 提供一个公共的 getInstance给外部返回一个对象 3. 步骤: 1. 私有化构造方法 2. 在类中创建一个对象,并且用private、static、final修饰 ...
此处采用了script标签作为编辑器容器对象,并设置了其类型是纯文本,从而在避免了标签内部JS代码执行的同时解决了部分同学在使用传统的textarea标签作为容器所带来的一次额外转码问题。 2、提交编辑器内容至后端 ...
所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。 比如下面的代码: function f1() { var n = 999; function f2() { console.log(n); } return f2; } var result = f1(); result();//999 ...
对于暂时被注释掉,后续可能恢复使用的代码片断,在注释代码上方,统一规定使用三 个斜杠(///)来说明注释掉代码的理由。 D .不要在视图模板中加入任何复杂的逻辑。 多选 4.关于分页查询,下列哪些说法符合《阿里...
此时通过使用STM32的内部参考电压功能(Embedded internal reference voltage),可以准确的测量ADC管脚对应的电压值,精度 0.01v左右,可以满足大部分应用场景。 详情参考Blog: ...
掌握使用VRML技术实现网上3D效果开发的技术,会用相关的工具添加各种3D造型,把各种造型进行组合,贴上外部效果。 设计某旅游信息宣传站点的整体构架。 营造有气势的主展馆和外部广场,设计华丽的内展厅展示某旅游...
包括:内部数据获取,外部数据获取,数据处理步骤。 Course4:分析场景及常用图表 概要:讲解报告中经常见到的分析场景及各场景中常用的图表。包括:变化,分布,对比,预测。 Course5:结论撰写与报告使用 概要...
转换(Transitions):从一个场景移动到另外一个不同风格的场景 菜单(Menus):创建内部菜单 文本渲染(Text Rendering):支持标签和HTML标签动作 文档(Documents):编程指南 + API参考 + 视频教学 +...
一般使用的八大排序算法是:插入排序、选择排序、冒泡排序、希尔排序、归并排序、快速排序、堆排序、基数排序,每个方法有其适合的使用场景,可以根据具体数据进行选择. 几个概念: 内部排序:排序期间元素全部...
JSAPI使用场景为微信内部,而H5支付则是使用在非微信下的外部浏览器。 1.JSAPI 在微信内部可以直接唤起微信浏览器的内置对象 WeixinJSBridge 废话不多说直接上代码: // 调用后端接口拿到JSAPI支付所需参数,我在...
使用一个合法公网地址,以不同的协议端口号与不同的内部地址相对应,也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换,用于企业只有一个公网IP但是有多个业务系统需要被互联网访问的场景。NAPT普遍用于接...
CheckMenuRadioItem 指定一个菜单条目被复选成“单选”项目 CreateMenu 创建新菜单 CreatePopupMenu 创建一个空的弹出式菜单 DeleteMenu 删除指定的菜单条目 DestroyMenu 删除指定的菜单 DrawMenuBar 为指定的...
每个插件模块尽量使用自己内部的类型和资源, 避免类型和资源冲突问题. 消息通信: 模块间通过消息通信实现相互调用, 最大化的解耦, 延迟加载依赖, 在模块被调用时加载(可设置自动异步加载依赖模块). 接近原生: 接近...
转换(Transitions):从一个场景移动到另外一个不同风格的场景 菜单(Menus):创建内部菜单 文本渲染(Text Rendering):支持标签和HTML标签动作 文档(Documents):编程指南 + API参考 + 视频教学 +...
第7章 内部类 2课时 学会定义内部类,能够在外部类中或外部类外实例化内部类;定义静态内部类和实例化。 通过this引用当前内部类和外部类的实例。 通过扩展类和实现接口两种方式...