您的位置:首页 > 编程语言 > Java开发

Java为什么要使用内部类

2017-09-11 09:15 218 查看
首先我们看一下什么才是内部类,下面是Spring源码中的一个代码段(他在getIDS()方法中又写了一个IDsHandler的类),

public Object[] getIDs(final String sql, final Class requiredType, final Object[] params) throws EJBException {
class IDsHandler extends RowCountCallbackHandler implements PreparedStatementCreator {
private List l = new LinkedList();

public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
PreparedStatement ps = conn.prepareStatement(sql);
// Don't prepare if no params
if (params != null)
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
return ps;
}

protected void processRow(ResultSet rs, int rowNum) throws SQLException {
l.add(columnExtractor.extractColumn(1, requiredType, rs));
}

public Object[] getIDs() {
return l.toArray();
}

public String getSql() {
return sql;
}
}

IDsHandler idsh = new IDsHandler();
jdbcTemplate.query(idsh, idsh);
return idsh.getIDs();
}	// getIDs


那么为什么要使用内部类呢,使用方法调用不好吗?下面介绍一个使用内部类的几点优势:

①内部类提供进入其外围类的绿色通道,其外围类可以直接通过new的方式声明内部类的对象,调用其中方法;

②一般来说,内部类继承自某个类,外围类也可继承某个类,这样就实现了Java中的多继承;(内部类可以访问外围类的属性和方法)

③private内部类给类的设计者提供了一种途径,通过这种方式可以完全阻止任何依赖于类型的编码,并且完全隐藏了实现的细节;

④匿名内部类可以使得代码更加地灵活,可以很方便的实现回调;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: