- 浏览: 611439 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
niuqiang2008:
谢了谢了 就是要找这个问题
struts2的<s:set><s:if>标签应用 -
love_zongming:
赞一个! 谢谢分享
向eclipse中添加user library的方式 -
MyPointOne:
后面的异常为什么出现?好像没说清楚!
Jboss中的web-console与jmx-console的配置 -
nysin:
顶一个,现在明白了...
JAVA静态和非静态内部类 -
chenhua_1984:
很不错!
Cause: net.sf.cglib.beans.BulkBeanException异常
一致对java的静态和非静态内部类的东东理解不清楚,今天测试了一下,下面把测试结果记录一下,加深印象。用于以后查找。
直接上代码。
直接上代码。
package com.test.xml; /** * @author <a href="mailto:dq201@126.com">du.qiang</a> * @version $Revision 1.1 $ 2010-6-23 上午06:48:28 */ public class OutClassTest { static int a; int b; public static void test() { System.out.println("outer class static function"); } public static void main(String[] args) { OutClassTest oc = new OutClassTest(); // new一个外部类 OutClassTest oc1 = new OutClassTest(); // 通过外部类的对象new一个非静态的内部类 OutClassTest.InnerClass no_static_inner = oc1.new InnerClass(); // 调用非静态内部类的方法 System.out.println(no_static_inner.getKey()); // 调用静态内部类的静态变量 System.out.println(OutClassTest.InnerStaticClass.static_value); // 不依赖于外部类实例,直接实例化内部静态类 OutClassTest.InnerStaticClass inner = new OutClassTest.InnerStaticClass(); // 调用静态内部类的非静态方法 System.out.println(inner.getValue()); // 调用内部静态类的静态方法 System.out.println(OutClassTest.InnerStaticClass.getMessage()); } private class InnerClass { // 只有在静态内部类中才能够声明或定义静态成员 // private static String tt = "0"; private int flag = 0; public InnerClass() { // 三.非静态内部类的非静态成员可以访问外部类的非静态变量和静态变量 System.out.println("InnerClass create a:" + a); System.out.println("InnerClass create b:" + b); System.out.println("InnerClass create flag:" + flag); // System.out.println("InnerClass call outer static function"); // 调用外部类的静态方法 test(); } public String getKey() { return "no-static-inner"; } } private static class InnerStaticClass { // 静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 private static String static_value = "0"; private int flag = 0; public InnerStaticClass() { System.out.println("InnerClass create a:" + a); // 静态内部类不能够访问外部类的非静态成员 // System.out.println("InnerClass create b:" + b); System.out.println("InnerStaticClass flag is " + flag); System.out.println("InnerStaticClass tt is " + static_value); } public int getValue() { // 静态内部类访问外部类的静态方法 test(); return 1; } public static String getMessage() { return "static-inner"; } } public OutClassTest() { // new一个非静态的内部类 InnerClass ic = new InnerClass(); System.out.println("OuterClass create"); } }
/** * 总结: * 1.静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。 * 2.静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员(方法,属性)。 * 3.实例化一个非静态的内部类的方法: * a.先生成一个外部类对象实例 * OutClassTest oc1 = new OutClassTest(); * b.通过外部类的对象实例生成内部类对象 * OutClassTest.InnerClass no_static_inner = oc1.new InnerClass(); * 4.实例化一个静态内部类的方法: * a.不依赖于外部类的实例,直接实例化内部类对象 * OutClassTest.InnerStaticClass inner = new OutClassTest.InnerStaticClass(); * b.调用内部静态类的方法或静态变量,通过类名直接调用 * OutClassTest.InnerStaticClass.static_value * OutClassTest.InnerStaticClass.getMessage() */
发表评论
-
Tomcat6.x + p6spy + IronTrackSQL 监控sql性能
2013-05-15 17:41 1370具体内容见附件!!! <script> (f ... -
说说Statement、PreparedStatement和CallableStatement的异同.
2012-05-15 16:22 23621.Statement、PreparedStatement和C ... -
JSP中Session对象的由来
2012-02-10 16:39 1659如果JSP没有显示的使用 <% @page sessio ... -
Jave的autoboxing与autounboxing
2012-02-03 13:21 1247Java 自动装箱与拆箱 一 ... -
ASCII码表图片
2011-12-08 10:10 4072ASCII对照码表 -
Linux上的Cron命令集合
2011-09-22 10:43 1177关于linux下的Cron 查看当前用户的cron列表命 ... -
Eclipse或MyEclipse设置启动JVM时的字符集
2011-08-31 22:34 3680Eclipse或MyEclipse设置启动JVM时的字符集 ... -
Ajax与JSP防止缓存介绍
2011-06-22 20:36 3212一:清除AJAX缓存的方法介绍: 1.在ajax发送请求前加上 ... -
Eclipse下怎么打jar包 jar怎么运行
2011-01-31 18:05 2856一、怎么打jar包 第一步:选中要打jar包的工程 第二步 ... -
Jboss中的web-console与jmx-console的配置
2010-10-10 15:34 9975JBoss安装成功后,一般 ... -
使用jboss服务器时遇到的相关问题
2010-09-27 23:50 4310Eclipse启动Jboss服务器,如何指定JVM虚拟内存大小 ... -
设置Tomcat,Jboss应用服务器的端口
2010-09-27 13:13 2278Tomcat,Jboss,Oracle端口号的修改 转载于ht ... -
向eclipse中添加user library的方式
2010-09-22 22:33 35571以前做项目都是把需要的jar包直接copy到工程的lib目录下 ... -
用LinkedList实现队列和栈
2010-07-13 11:01 1733队列实现: package com.test.unicode; ... -
摘抄一段关于HashSet的描述
2010-07-13 10:20 1118HashSet介绍: 1.只有类的实例对象要被采用哈希算法进 ... -
找不到 java 类: org.apache.catalina.startup.Bootstrap
2010-06-18 10:55 17683今天启动服务器时,在catalina.out文件日志中出现了异 ... -
BigDecimal
2010-06-12 17:30 1203前段时间看见一个关于 2.0-1.9非0.1结果的文章。 在此 ... -
设置ECLIPSE自动编译
2010-06-11 12:34 8289设置eclipse自动编译的2中方式: 1. 确保 proje ... -
代码自我审查的一些体会
2010-05-24 14:20 1125代码自我审查的一些体 ... -
DecimalFormat与ORACLE中字符格式化的一点点关系
2010-05-24 10:56 18761.java中DecimalFormat 在java中Dec ...
相关推荐
2. **不能访问外部类的非静态成员**:由于静态内部类与外部类的静态属性和方法处于相同的静态上下文中,因此静态内部类无法访问外部类的非静态成员变量或方法。 3. **命名空间独立**:静态内部类有自己的命名空间,...
这种类的声明前面带有`static`关键字,与普通的内部类(非静态内部类)有所不同,它们在使用和行为上存在显著的差异。 首先,让我们来探讨一下静态内部类与非静态内部类的主要区别: 1. **引用关系**: - 静态...
Java语言中的静态内部类,也称为嵌套类,是内部类的一种特殊形式,它与非静态内部类(也称为成员内部类)相比有着独特的特点和使用场景。在深入探讨其使用规范之前,我们先理解静态内部类的基本概念。 静态内部类不...
非静态嵌套类可以分为三种:在一个类中直接定义的内部类、在一个方法中定义的内部类和匿名内部类。匿名内部类是指没有名字的内部类,通常用于实现某个接口或继承某个类。 四、在外部类中定义内部类 在外部类中定义...
内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态内部类与普通的成员内部类不同,它不持有对外部类的引用。因此,可以像其他静态成员一样,...
根据内部类是否声明为static,它们被分为非静态内部类(也称为成员内部类)和静态内部类。 #### 二、静态内部类的特点 静态内部类具有以下特点: 1. **独立性**:静态内部类与外部类之间没有依赖关系,即使外部类...
总之,内部类和静态内部类是Java中独特的类设计方式,它们提供了灵活的代码组织和访问控制手段。成员内部类适合处理需要紧密关联的情况,而静态内部类则适用于实现工具类或辅助功能,并且在单例模式中有独特的优势。...
内部类可以分为非静态内部类、局部内部类、静态内部类和匿名内部类四种。 非静态内部类是指定义在另一个类的非静态成员中的类。非静态内部类可以访问外部类的成员变量和成员方法,同时也可以被外部类访问。在外部类...
静态嵌套类不能访问外部类的非静态成员变量和方法,但是可以访问外部类的静态成员变量和方法。 方法内部类 方法内部类是指定义在外部类的方法中的内部类。方法内部类可以访问外部类的所有成员变量和方法,包括私有...
静态内部类与其它内部类的区别在于非静态内部类在编译完成之后会隐含地保存一个引用,该引用是指向创建它的外部类,但是静态内部类却没有。静态内部类只是嵌套在外部类中,因此也被称为嵌套内部类。 静态内部类的...
本文详细介绍了 Java 中内部类的各种类型及其使用场景,包括静态内部类、非静态内部类、局部内部类以及匿名内部类。每种类型的内部类都有其独特的特性和应用场景,理解这些差异对于更高效地利用 Java 语言特性至关...
- 静态内部类和成员内部类在内存管理上有差异,静态内部类不会引起外部类的实例化,而成员内部类会。 - 匿名内部类不能包含任何静态声明,因为它们没有名称。 总的来说,Java 内部类是强大且灵活的工具,有助于构建...
然而,不当使用Handler,尤其是结合匿名内部类或非静态内部类,可能导致内存泄漏和Native内存增加,这对应用性能和稳定性造成负面影响。 首先,我们要理解内存泄漏的概念。内存泄漏是指程序中已分配的内存没有被...
- 另外,静态内部类在某些情况下可能不如非静态内部类灵活,但在特定场景下依然非常有用。 通过以上总结,我们可以看到Java中的静态与非静态特性在许多方面都有着显著的区别。了解这些区别可以帮助开发者更好地...
- **实例内部类**:在类的内部定义的非静态类称为实例内部类。实例内部类的实例需要依赖于外部类的实例,即创建实例内部类对象前必须先创建外部类对象。 - **静态内部类**:静态内部类与实例内部类的区别在于,...
Java内部类主要包括以下几种类型:成员内部类(非静态内部类)、静态内部类(也称为静态嵌套类)、局部内部类和匿名内部类。 - **成员内部类**:这种类型的内部类是定义在外部类的一个成员位置上,它可以访问外部类...
* 静态内部类不能访问外部类的非静态成员 匿名内部类的特点: * 匿名内部类是指没有名字的内部类 * 匿名内部类通常用在创建实例时使用 * 匿名内部类可以访问外部类的所有成员 在 Java 中,内部类是一种非常重要的...
内部类分为四类:非静态成员内部类、静态成员内部类、局部内部类和匿名内部类。接下来将逐一介绍这四种类型的内部类。 #### 二、非静态成员内部类 非静态成员内部类是最常见的一种内部类形式,它具有以下特点: 1...
Java内部类应用之静态内部类应用示例主要介绍了Java内部类应用之静态内部类应用,结合实例形式分析了Java静态内部类的原理、功能、用法及相关操作注意事项。 一、静态内部类的定义和特点 静态内部类是使用static...
内部类的类体中不能声明静态成员变量和静态方法。 匿名类是一种特殊的内部类,它可以继承父类的方法也可以重写父类的方法。匿名类的特点是:它可以访问外嵌类中的成员变量和方法,但它的类体中不能声明静态成员变量...