java内部类:Java内部类应用实践来源: 发布时间:星期四, 2009年2月12日 浏览:346次 评论:0
第种应用简而言的可以类比c语言里面struct方便而且还可以对外部隐藏(通过private) 介绍说明:我习惯使用Container来命名inner 外部以区别该Java文件以外感觉这样更贴切 package com.sss.exam.inner; /** * <p>标题: OutterApp1.java</p> * <p>功能描述:内部类应用场景1: * 相当于delphi记录类型或者c结构体 * * <p>版权: Copyright (c) 2007</p> * <p>公司: </p> * @author fbysss * @version 1.0 */ public Container1 { private PrivateParams{//私有是针对外部其他类访问是私有即外部其他类不能访问 public id ; public String name; } public PublicParams{ public id ; public String name; } /*本思路方法可以访问私有内部类 * */ public void testParams{ PrivateParams params = PrivateParams; params.id = 1; params.name = "sss"; } /** * @param args */ public void (String args) { Container1 out = Container1; //Container1可以访问public内部类和private内部类 PublicParams pp = out. PublicParams; pp.id = 2; pp.name = "sss2"; PrivateParams params = out. PrivateParams; params.id = 3; pp.name = "sss3"; } } 其他类访问: public JustTest { public void (String args) { Container1 out = Container1; //Container1可以访问public内部类和private内部类 PublicParams pp = out. PublicParams; //compile error .不能访问私有内部类PrivateParams params = out. PrivateParams; } } 第 2种和第 3种应用我认为差别不大可以理解为种情况不过是解决区别问题罢了 package com.sss.exam.inner; /** * <p>标题: Container2.java</p> * <p>功能描述: <br> * * </p> * <p>版权: Copyright (c) 2007</p> * <p>公司: </p> * @author fbysss * @version 1.0 */ /*** * 同个类里面定义非public类不能加final abstract 的外modier * 其modier 值为0不在Modier定义里面有人称的为friendly修饰符 *这里User跟单独写个User类区别仅仅在于modier.编译出来都是单独存在 */ User{ id; String name; } public Container2 { private User user = null; //个对象是可以这样解决了try catch问题 //但是如果是个String,则不行问题就在Java传值和传引用问题String相当于就是传值 /** * @param args */ public void (String args) { /*背景:catch和finally都相同只是try部分区别 * 传统思路方法:每次都需要写try,catch,finally * */ /* String user = null; try{ user = "fbysss"; }catch(Exception e){ user = "error."; }finally{ user "'s work finished."; }*/ Container2A c2a = Container2A; c2a.Method; } //使用了内部类思路方法: public void Method{ Container2Common c2c = Container2Common; c2c.execute( BaseMyMethod{ public User doMyMethod{//必须要有返回值否则通用处理思路方法得不到user //error.无法访问user变量必须声明为成员变量user = "fbysss"; user = User; user.name = "fbysss"; .out.prln(user.name); user; } }); .out.prln("old user is:"+user.name); } } 公共处理类: public Container2Common { public void execute(MyMethod mm){ User user = null; try{ //通用接口思路方法但是具体代码不样 user = mm.doMyMethod; }catch(Exception e){ user.name = "error."; }finally{ user.name "'s work finished."; .out.prln(user.name); } } } 个性思路方法接口: public erface MyMethod { public User doMyMethod; } 个性stub类目是能够例子化接口是不能例子化 public BaseMyMethod implements MyMethod { public User doMyMethod { // TODO Auto-generated method stub null; } } 0
相关文章读者评论
发表评论 |