`
wwty
  • 浏览: 537224 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

内部类使用场景一:只被外部类所使用

阅读更多

我们说这个内部类依附于它的外部类而存在,可能的原因有:
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内部类的兴趣。

    Java的内部类讲解案例代码(成员内部类、局部内部类、匿名内部类、静态内部类、外部类访问四种内部类、其他类访问四种内部类...)

    内部类在Java中广泛应用于各种场景,特别是当一个类与其外部类有紧密联系并且仅在该外部类中使用时。比如,你可以在一个类中定义一个私有的内部类,用于实现某种算法或者提供一个特定的服务。内部类的作用域仅限于其...

    java设计模式【之】享元模式【源码】【场景:多缓存可选模式】

    * 存在多种缓存实现,缓存对象只需要一个,但是不保证什么情况下使用什么类型 * 此时可以采用享元模式,“元” 理解为 “同一地址对象” * * 源码应用 * Integer 问题 * 使用场景:String 类型,连接池 * ...

    threejs 切换场景

    threejs切换场景 实现图朴上的切换效果, 而不是相机的视角移动,不浪费性能,非常棒的效果,代码简单,实现思路简单,适合新手开发项目中,遇到当前视角切换到模型内部 等效果 , threejs scene的切换 , 视角的...

    驼峰转下划线、下划线转驼峰的java工具类

    简单易用:这两个方法都是静态方法,可以直接在类内部或外部任何地方调用,无需创建实例。 正则表达式高效:利用Java的正则表达式快速完成匹配和替换,性能较好。 适应性强:能够处理大多数常见的驼峰和下划线...

    day020-继承加强和设计模式代码和笔记.rar

    先在类中创建一个对象 (联想到封装) =&gt; 提供一个公共的 getInstance给外部返回一个对象 3. 步骤: 1. 私有化构造方法 2. 在类中创建一个对象,并且用private、static、final修饰 ...

    UEditor入门基础

    此处采用了script标签作为编辑器容器对象,并设置了其类型是纯文本,从而在避免了标签内部JS代码执行的同时解决了部分同学在使用传统的textarea标签作为容器所带来的一次额外转码问题。 2、提交编辑器内容至后端 ...

    JavaScript 闭包的使用场景

    所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。  比如下面的代码: function f1() { var n = 999; function f2() { console.log(n); } return f2; } var result = f1(); result();//999 ...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    对于暂时被注释掉,后续可能恢复使用的代码片断,在注释代码上方,统一规定使用三 个斜杠(///)来说明注释掉代码的理由。 D .不要在视图模板中加入任何复杂的逻辑。 多选 4.关于分页查询,下列哪些说法符合《阿里...

    无外部基准电压时STM32L151精确采集ADC电压

    此时通过使用STM32的内部参考电压功能(Embedded internal reference voltage),可以准确的测量ADC管脚对应的电压值,精度 0.01v左右,可以满足大部分应用场景。 详情参考Blog: ...

    vrml毕业设计3d展览馆内部

    掌握使用VRML技术实现网上3D效果开发的技术,会用相关的工具添加各种3D造型,把各种造型进行组合,贴上外部效果。 设计某旅游信息宣传站点的整体构架。 营造有气势的主展馆和外部广场,设计华丽的内展厅展示某旅游...

    数据分析报告制作秘籍教程

    包括:内部数据获取,外部数据获取,数据处理步骤。 Course4:分析场景及常用图表 概要:讲解报告中经常见到的分析场景及各场景中常用的图表。包括:变化,分布,对比,预测。 Course5:结论撰写与报告使用 概要...

    Cocos2D_Game_Development_中文版(全)

     转换(Transitions):从一个场景移动到另外一个不同风格的场景  菜单(Menus):创建内部菜单  文本渲染(Text Rendering):支持标签和HTML标签动作  文档(Documents):编程指南 + API参考 + 视频教学 +...

    Python实现八大排序

    一般使用的八大排序算法是:插入排序、选择排序、冒泡排序、希尔排序、归并排序、快速排序、堆排序、基数排序,每个方法有其适合的使用场景,可以根据具体数据进行选择. 几个概念: 内部排序:排序期间元素全部...

    vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题

    JSAPI使用场景为微信内部,而H5支付则是使用在非微信下的外部浏览器。 1.JSAPI 在微信内部可以直接唤起微信浏览器的内置对象 WeixinJSBridge 废话不多说直接上代码: // 调用后端接口拿到JSAPI支付所需参数,我在...

    华为NAPT.docx

    使用一个合法公网地址,以不同的协议端口号与不同的内部地址相对应,也就是&lt;内部地址+内部端口&gt;与&lt;外部地址+外部端口&gt;之间的转换,用于企业只有一个公网IP但是有多个业务系统需要被互联网访问的场景。NAPT普遍用于接...

    API之网络函数---整理网络函数及功能

    CheckMenuRadioItem 指定一个菜单条目被复选成“单选”项目 CreateMenu 创建新菜单 CreatePopupMenu 创建一个空的弹出式菜单 DeleteMenu 删除指定的菜单条目 DestroyMenu 删除指定的菜单 DrawMenuBar 为指定的...

    xmljava系统源码-xPlugin:Android插件框架,https://gitee.com/juefeng_com/xPlugin

    每个插件模块尽量使用自己内部的类型和资源, 避免类型和资源冲突问题. 消息通信: 模块间通过消息通信实现相互调用, 最大化的解耦, 延迟加载依赖, 在模块被调用时加载(可设置自动异步加载依赖模块). 接近原生: 接近...

    Cocos2d-html5-v2.0

     转换(Transitions):从一个场景移动到另外一个不同风格的场景 菜单(Menus):创建内部菜单   文本渲染(Text Rendering):支持标签和HTML标签动作   文档(Documents):编程指南 + API参考 + 视频教学 +...

    AIC的Java课程1-6章

    第7章 内部类 2课时  学会定义内部类,能够在外部类中或外部类外实例化内部类;定义静态内部类和实例化。  通过this引用当前内部类和外部类的实例。  通过扩展类和实现接口两种方式...

Global site tag (gtag.js) - Google Analytics