草庐IT

static成员

全部标签

java - 静态嵌套类可以完全访问私有(private)外部类成员吗?

更新:这个我还是不太清楚。我试图找到JLS来描述这种行为。相反,我在8.3oftheJLS中找到了这句话:Memberclassdeclarations(§8.5)describenestedclassesthataremembersofthesurroundingclass.Memberclassesmaybestatic,inwhichcasetheyhavenoaccesstotheinstancevariablesofthesurroundingclass;ortheymaybeinnerclasses(§8.1.3).这是否意味着嵌套静态类不应该访问外部类变量?我在哪里可以找

java - 为什么static和default接口(interface)方法不能synchronize却可以strictfp?

这个问题在这里已经有了答案:Whatisthereasonwhy“synchronized”isnotallowedinJava8interfacemethods?(2个答案)关闭4年前。为什么静态和默认接口(interface)方法不能同步?人们说同步是一个实现细节。好吧,strictfp也是一个实现细节,但这并不妨碍在静态和默认接口(interface)方法上允许strictfp。默认方法是继承的,如果实现接口(interface)的类没有覆盖默认方法,那么让它已经同步可能会非常方便。我猜测synchronized(以及strictfp)不是继承的(我在这里吗?),但这并不能解释为

java - 我应该扩展 ArrayList (is-a) 还是应该将其作为成员包含 (has-a)?

我正在制作一个维护数字列表的简单程序,我希望这个列表也有一个名称。最好的方法是:让我的列表类扩展ArrayList还是让它包含一个ArrayList成员?在这两种情况下,当然会有一个“名称”字符串成员。第一种方法意味着我只需要为名称实现一个getter和setter,但我认为这会将我的类与特定实现联系得太紧密?例如,如果我想稍后使用Vector,那么我将不得不更改所有地方的代码。第二种方法可以更容易地更改实现,但现在当然变得很烦人,因为我必须实现一堆包装器。我已经阅读了有关继承与组合的SO帖子,并且由于我的列表是一种ArrayList,所以我倾向于第一种方法。但是,讨论是否有任何差异,

java - 继承后保护成员行为。

我对protected标识符有一些疑问。在K.Sierra的SunCertifiedJavaProgrammerStudyGuide第一章中,我找到了以下信息:“一旦包外的子类继承了protected成员,该成员(由子类继承)对子类之外的任何代码都是私有(private)的,子类的子类除外。”我提供了反射(reflect)上述陈述的示例代码,这对我来说是绝对清楚的。//Parentclasspackagepackage1;importpackage2.Child;publicclassParent{protectedinti=5;}//Childclasspackagepackage2

java - 用大数据统计普通组成员的算法

我需要编写一个程序来计算两个用户在同一组中的次数。用户由用户名和组由id给出。例如,输入(存储在文本文件中):john32john21jim21jim32bob32我想要结果:john-jim2john-bob1jim-bob1这听起来微不足道。但问题是:我有180万个组和300,000个用户。还有很多成员(member)资格(我预计每个用户平均至少有50个,可能更多)。这意味着大量的数据和处理。我已经编写了5个不同的程序来执行此操作,但没有一个能够减少数据量:作为PostgreSQL查询,它太慢了。在Java工作内存中的Map中运行太耗内存(第一个堆空间,优化后我得到罕见的“超出GC

Java基础: a static function without a name,或返回类型

publicclassMain{publicstaticfinalLoggerLOGGER=Logger.getLogger(Main.class.getName());static{try{LOGGER.addHandler(newFileHandler("errors.log",true));}catch(IOExceptionex){LOGGER.log(Level.WARNING,ex.toString(),ex);}}...我想知道这个无名静态函数是关于什么的。我从未在java中看到过这样的东西(我目前正在学习)。它有什么用?它通常在什么时候使用?什么时候在程序中执行?

Java泛型成员初始化

假设我有一个参数化的Java类,它包含一个私有(private)T_member。我想编写一个default构造函数(无参数),以某种方式将我的T_member初始化为某个已知的类型T特定值(例如-1表示整数,Float.MAX_VALUE表示float...)。那可能吗?我尝试了newT(),但编译器不喜欢那样。还是我什么都不做,保证会为我调用默认构造函数? 最佳答案 因为typeerasure,在运行时“没有T”。绕过它的方法是传递一个Class的实例进入构造函数,像这样:publicclassMyClass{T_member;

java - 包私有(private)类中的公共(public)成员

我想知道在包私有(private)类中有公共(public)成员是否可以(不被认为是不好的做法)。我倾向于将public关键字添加到我的默认可见性类的成员,以指示此类成员是类API的一部分。我这样做只是为了可读性,因为在这种情况下,公共(public)成员与没有任何访问修饰符的成员具有基本相同的可见性(即包可见性)。对吗?例子:classModuleImplementationClass{privateintfieldA;privateStringfieldB;privatevoidsomeClassInternalMethod(){//impl}publicintdoSth(){//

java - 无法在内部类中声明 Public static final String s = new String ("123")

我尝试声明一个类,如下所示classOuter{privatefinalclassInner{publicstaticfinalStrings1=newString("123");publicstaticfinalbyte[]bytes=newbyte[]{0x00,0x01};publicstaticfinalStrings2="123";publicstaticfinalbytebyte1=0x02;}}在上面的代码中,s1和bytes无法编译,但s2和byte1可以编译。如果我将整个常量声明放在外部类中,它就可以正常工作。我错过了什么。有帮助吗? 最佳

java - 本地成员更快或实例成员

下面的代码证明method1比method2快。任何人都可以评论这种行为的原因是什么。classTrial{String_member;voidmethod1(){for(inti=0;i 最佳答案 Thefollowingcodeprovesthatmethod1isfasterthanmethod2没有。它没有证明它。这取决于很多因素。当我运行这段代码时,我得到了14031248所以在我的环境中,您的代码“证明”方法1比方法2慢。进行基准测试时,您需要注意缓存和JVM预热等效果。另见HowdoIwriteacorrectmicr