Java静态内部类的应用
2016-03-07 10:10
323 查看
之前(http://blog.csdn.net/amazing_happens/article/details/50768748)讨论过静态内部类的使用方法,但是当真正遇到的时候,却反应不过来了。例如下面的例子:
CallableAndFuture这个类为什么变成了static类,去掉有没有异常?
果然,如果去掉static就会报一个错误:No enclosing instance of type CallableTest is accessible. Must qualify the allocation with an enclosing instance of type CallableTest (e.g. x.new A() where x is an instance of CallableTest).
at CallableTest.main(CallableTest.java:11)
这句话的意思是,由于CallableAndFuture是内部类,所以要想new一个CallableAndFuture实例,就必须先new一个CallableTest实例:
当然还有一种更方便的方法,把CallableAndFuture类定义为静态类。
欢迎转载,但请注明出处。
import java.util.concurrent.*; public class CallableTest { public static class CallableAndFuture implements Callable<String>{ public String call()throws Exception{ return "Hello World"; } } public static void main(String[] args){ ExecutorService threadPool = Executors.newSingleThreadExecutor(); Future<String> future = threadPool.submit(new CallableAndFuture()); try { System.out.println("waiting thread to finish"); System.out.println(future.get()); } catch (Exception e) { e.printStackTrace(); } } }
CallableAndFuture这个类为什么变成了static类,去掉有没有异常?
果然,如果去掉static就会报一个错误:No enclosing instance of type CallableTest is accessible. Must qualify the allocation with an enclosing instance of type CallableTest (e.g. x.new A() where x is an instance of CallableTest).
at CallableTest.main(CallableTest.java:11)
这句话的意思是,由于CallableAndFuture是内部类,所以要想new一个CallableAndFuture实例,就必须先new一个CallableTest实例:
CallableTest a = new CallableTest(); CallableAndFuture b = a.new CallableAndFuture();
当然还有一种更方便的方法,把CallableAndFuture类定义为静态类。
欢迎转载,但请注明出处。
相关文章推荐
- 【leetcode】【112】Path Sum
- java垃圾回收机制
- Myeclipse无法提示显示No Default Proposals
- (转)struts2接收前台参数的三个方法
- java 常用快捷键汇总
- JDK内置工具使用大全
- 使用Eclipse构建Maven的SpringMVC项目
- Java反射机制的学习(3)
- 对hibernate的简单理解
- JavaBean在JSP中显示时间
- java使用JFreeChart生成图表
- 严重: 文档无效: 找不到语法。 at (null:2:8) ; 严重: Exception starting filter struts2
- Java NIO和IO的主要区别
- SpringMVC集成google验证码
- IT十八掌作业_java基础第九天_多线程、自动拆装箱
- Java内存管理机制
- 投票系统开发总结struts2,jfreechart,cookie应用,以及前端技术
- Java实用类汇总
- Java递归遍历树形结构
- JavaMail使用SMTP协议发送电子邮件