草庐IT

static成员

全部标签

java - 使用 java : import static 的任何性能问题

我们在代码中经常使用util函数和一些功能,如Logger、EventWriter、一些常见的DB调用等。我更喜欢这些函数是静态的,因为在我的每个代码中实例化这些类中的函数会严重影响性能(会是吗?!!!?,我在stackoverflow中读到过多的类实例化会性能受到影响,我正在开发一个具有大型客户数据库和服务器上高访问日志的项目)。我遇到了看起来很酷的staticimportinjava,我想知道:在使用它之前是否有任何严重的考虑?我已经从StackOverFlow收集到的东西:UsingstaticimportcouldmaketheCodeNon-Readable,likejudg

java - 访问内部匿名类成员

除了使用反射访问匿名内部类的成员之外,还有什么办法吗? 最佳答案 匿名内部类有类型但没有名称。您可以访问未由指定父类(superclass)型定义的字段。然而,一旦分配给命名类型变量,接口(interface)就会丢失。显然,您可以从内部类本身访问这些字段。添加代码的一种方法是通过实例初始化程序:finalAtomicIntegery=newAtomicInteger();newRunnable(){intx;{x=5;doRun(this);y.set(x);}publicvoidrun(){...blah...}};匿名内部类表

java - 方法头中的 'static' 是什么意思?

我想了解“writeNumbers”方法header中“静态”一词的作用?:publicclassDisplayClass{/***@paramargs*/publicstaticvoidmain(String[]args){writeNumbers();}publicstaticvoidwriteNumbers(){intcount;for(count=1;count 最佳答案 术语static表示该方法在类级别可用,因此不需要在调用之前实例化对象。因为writeNumbers是从本身是static的方法调用的,所以它只能调用其他

java - Eclipse 为具有 'm' 后缀的域对象和类成员生成 getter/setter

我有一个关于在我的域对象中生成的getter和setter方法的小问题。我想为我的源代码使用一个通用的风格指南。该风格指南的一部分说我在每个类成员名称的开头都使用前缀“m”表示成员。classUser{StringmName;ListmAllCall;ListmAllGeo;不幸的是,我有几个具有更多成员变量的类。我遇到的问题是我是一个非常懒惰的开发人员,我在Eclipse中使用创建了getter和setter方法"Source"->"GenerateGettersandSetters".结果是publicStringgetmName(){returnmName;}publicvoid

java - 为什么 main() 在 java 中被声明为 public 和 static

这个问题在这里已经有了答案:whymainmethodcan'tbeofdefaultscope?[duplicate](9个回答)WhyistheJavamainmethodstatic?(37个答案)关闭8年前。为什么main声明为public和static?publicstaticvoidmain(Stringarg[]){}根据java中的ans"Themethodisstaticbecauseotherwisetherewouldbeambiguity:whichconstructorshouldbecalled?"

java - 使用 List<?> 成员定义抽象泛型类

即使尝试为此想出一个干净的标题也是一个挑战。基本思想是定义两个父类(superclass):一个用于“子”项目,其成员引用其“父”,另一个用于包含子对象的“父”列表。从child->parent和parent->child的链接是对称的。每个父/子父类(superclass)都有定义和实现附加功能的子类。总有一个并行子类使得child与parent配对.即parent将只包含child引用资料,以及child只会引用parent-子类型之间没有“交叉”。我该如何表示呢?几天来我一直坚持这个问题,我对多级嵌套泛型类型的创意越多,它就越糟糕。这就是我想要做的:abstractclassCh

java - 在ArrayBlockingQueue中,为什么将final成员字段复制到本地final变量中?

在ArrayBlockingQueue中,所有需要锁的方法在调用lock()之前将其复制到本地final变量。publicbooleanoffer(Ee){if(e==null)thrownewNullPointerException();finalReentrantLocklock=this.lock;lock.lock();try{if(count==items.length)returnfalse;else{insert(e);returntrue;}}finally{lock.unlock();}}当字段this.lock为finalthis.lock复制到局部变量lock/?

java - 如何扩展基本成员字段?

我有一个类(Base)和一个InfoBase类型的字段,其中包含一些信息。一种Base的特化(Ext)需要保存附加信息(InfoExt)。因此Ext将一个InfoExt分配给Base.info。但是我遇到了问题Base替换了info,因为它将分配info=newInfoBase()因此InfoExt的附加信息丢失。因此我在Base(变体A)中创建了一个abstractvoidassign()。在这个每次在Ext中使用时,都需要将案例信息转换为InfoExt。因此,在变体B中,我另外创建了abstractInfoBaseinfo()。variantAvariantB+----------

java - 使用 JUnit 在参数化测试类中使用枚举成员时出现异常

我有一个以枚举成员作为参数的参数化测试类。publicenumMyEnum{A,B}这是测试类的重要部分:@ParameterizedRobolectricTestRunner.ParameterspublicstaticCollectiondata(){returnArrays.asList(newObject[][]{{MyEnum.A}});}publicMyTestClass(MyEnumvalue){}运行测试时,我得到这个异常:java.lang.IllegalArgumentException:argumenttypemismatch如果我将构造函数更改为publicMy

java - 为什么在Java中访问 protected 成员是这样实现的?

关于在Java中访问protected成员的问题已经被问过并回答过很多次,例如:Java:protectedaccessacrosspackages但是我不明白为什么要这样实现,参见《JavaProgrammingLanguage》(第4版)的解释:“限制背后的原因是:每个子类继承父类(superclass)的契约并以某种方式扩展该契约。假设一个子类作为其扩展契约的一部分,对父类(superclass)的protected成员的值施加约束父类(superclass)。如果不同的子类可以访问第一个子类对象的protected成员,那么它可以以破坏第一个子类契约的方式操纵它们,这是不允许的