我使用invokeAndWait偶然发现了一个问题.下面的示例代码说明了该问题.任何人都可以详细说明发生了什么事吗?为什么lambda表达式挂起而匿名内部类和方法ref没有.public class Test {// A normal (non-static) initializer does not have the problemstatic {try {System.out.println("initializer start");// --- WorksSystem.out.println("\nanonymous inner-class: Print.print");EventQueue.invokeAndWait(new Runnable() {@Over...
我正在用Java编写一个大型游戏,我正在尝试优化代码,但也要保持代码整洁有序.现在我不确定是否应该使用具有许多实例使用的几个变量的单个类的公共静态字段. 例如,类摄像机具有x和y位置,用于定义用户正在查看的地图的哪个部分以及需要绘制到屏幕的内容.目前我正在使用5万个单位进行基准测试,我有以下选项来绘制它们. 1:在每个单元中存储对摄像机实例的引用,并在绘制时调用getX()和getY():public void paint() { paint(x - cam...
我有一个显示部门文档的项目.我将所有文档(从数据库中获取)存储在静态arrayList中.每隔X小时,我就根据数据库中的新doc(如果有的话)重建了arrayList.还有一个静态变量来控制重建该数组,在执行重建任务的方法中设置和取消设置.每个访问服务器的Web浏览器都将创建此类的实例,但doc arrayList和该控件变量在所有类实例之间共享. Find-Bugs工具抱怨“从实例方法someClassMethod写入静态字段someArrayName和someVariableName”.似乎这不是...
/*** @Description: 利用键值模式控制service* @Author: zhanglifeng* @Date: 2019年 04月 28日 14:41**/ public class ServiceManagerSingleton {private static final Logger logger = LoggerFactory.getLogger(ServiceManagerSingleton.class);private static Map<String, IChannelService> serviceMap;@Resource(type = com.***.***.service.impl.CCBServiceImpl.class)private IChannelService ccbService;private static cl...
public class Test {public static void main(String[] args) {System.out.println("A");new Test();new Test();}public Test() {System.out.println("B");}{System.out.println("C");}static {System.out.println("D");} } 输出 DACBCB 结论:加载顺序:静态块->构造块->构造方法 这里D在A前因为整个main方法是在这个类里的,要运行main方法,需要先加载这个类。故D在A前public class Test {public static void main(String[] arg...
声明:本博客为原创博客。未经同意,不得转载。原文链接为 http://blog.csdn.net/bettarwang/article/details/27012421。 我们都知道。非静态内部类能够訪问外部类的私有成员(包含私有变量和方法),这也正是使用非静态内部类与普通类的一个重要差别:非静态内部类是依赖于外部类对象而存在的,这样的依赖就包含它要能自由地訪问外部类对象的全部成员(由于private成员都能够訪问了,其它权限的成员更不在话下。只是一般来说...
静态方法和默认方法 /*** 静态方法和默认方法* * 默认方法:默认方法使用关键字default修饰方法* 默认方法使得开发者可以在 不破坏二进制兼容性的前提下,往现存接口中添加新的方法,* 即不强制那些实现了该接口的类也同时实现这个新加的方法,默认方法不需要实现* 默认方法会被实现类继承或者重写* * 静态方法:静态方法使用关键字static修饰方法* *...
今天要介绍的是一个Java中一个很重要的概念——代理。什么是代理?联系生活想想看,代理似乎并不陌生,最形象的代表便是经纪人,明星一般都有经纪人,经纪人作为中间人,负责代理明星的相关事宜,比如说,有人要请明星去唱歌表演,一般不会直接跟明星联系,而是联系他的经纪人,他的经纪人来负责安排行程,而真正唱歌表演的还是明星本人,经纪人仅仅作为一个附加物存在。在Java中,代理也是这样的概念,来看个栗子:先来创建一个明...
今天来说说Java中的最后一种内部类——静态内部类所谓的静态内部类,自然就是用static修饰的内部类,那用static修饰过后的内部类,跟一般的内部类相比有什么特别的地方呢?首先,它是静态的,这就意味着它的创建不依赖于外部类,创建内部类的实例不需要像普通内部类一样先创建外部类实例才能创建。其次,有优势必然有劣势,它不能像普通内部类一样无限制的访问外部类的方法和成员变量,只能访问静态成员变量和静态方法。话不多说,...
类加载器 类加载器:(了解) 类加载: 我们编写的.java文件,jvm会将变成.class文件.该文件要想运行,必须加载内存中,然后会生成一个对象.Class对象 类加载器的作用:ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性加载那么多jar包那么多class,那内存不崩溃。 ClassLoader:是一...
先看看静态代理是如何操作的 定义接口:1 public interface Person { 2 public void sayHello(String content, int age); 3 public void sayGoodBye(boolean seeAgin, double time); 4 }实际的类: 1 public class Student implements Person{2 3 @Override4 public void sayHello(String content, int age) {5 // TODO Auto-generated method stub6 System.out.println("student say hello" + c...
package day02; /*** 包装类提供了一个静态方法parseXXX(String str)* 可以将给定的字符串转换为对应的基本类型。* 前提是该字符串必须正确的描述基本类型可以保存的值。* @author kaixu**/ public class IntegerDemo4 {public static void main(String[] args) {String str = "123";int i = Integer.parseInt(str);System.out.println(i+1);//double d = Integer.parseDouble(str);//System.out.println(d+1);}}
如以下面试题:/** * @author hjs * @date 2019/3/62:41 * @Dec */public class B { public static B t1 = new B(); public static B t2 = new B(); { System.out.println("父类构造块"); } static { System.out.println("父类静态块"); }} /** * @author hjs * @date 2019/3/62:35 * @Dec */public class A extends B { public static A t1 = new A(); public static A t2 = new A(); {...
java 静态变量在编译阶段就已经明确位置, 所以静态变量的声明与初始化在编码顺序上可以颠倒。也就是说可以先编写初始化的代码,再编写声明代码。如:public class Test {// 静态变量的初始化static {_i = 10;}// 静态变量的声明public static int _i; } 所以如下代码可以被重读下public class Test {static {_i = 20;}public static int _i = 10;public static void main(String[] args) {System.out.println(_i);} }//等价于如...
一、接口中的所有方法默认都是public abstact修饰的,所以不需要在前面加public abstact。 二、abstract类不能实例化,必须被非抽象类继承才能使用,这也是抽象类被设计出来的主要作用。 三、抽象类中可不可以定义静态(static)方法? 答:可以。抽象类中可以定义静态方法,只是抽象类自己不能实例化,所以这个静态方法实际是帮自己的子类(实现类)定义的。但是抽象类中不能有”静态抽象“方法,因为根本就没有“静态抽象方法”这种...