草庐IT

成员方

全部标签

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 - 本地成员更快或实例成员

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

java - 为什么拥有静态成员会使语言不那么面向对象?

我目前正在学习Scala,我在Odersky的ProgrammingScala2ndedition中看到了这个语句:onewayinwhichScalaismoreobject-orientatedthanJavaisthatclassesinScalacannothavestaticmembers.我在Java或Scala方面的经验不足,无法理解这种比较。为什么拥有静态成员会使语言不那么面向对象? 最佳答案 奥德斯基的说法是有道理的,意义重大,但有些人不明白他的意思。假设在Java中你有一个类Foo和方法f:classFoo{in

Java:防止覆盖成员变量

Java中一个有用的特性是可以选择将成员方法声明为final,这样它就不能在后代类中被覆盖。成员变量有类似的东西吗?classParent{publicfinalvoidthisMethodMustRemainAsItIs(){/*...*/}publicStringthisVariableMustNotBeHidden;}classChildextendsParent{publicfinalvoidthisMethodMustRemainAsItIs(){/*...*/}//CausesanerrorpublicStringthisVariableMustNotBeHidden;//

java - 如何保留包含特定成员的类?

我只想保留类,其中包含用@Keep注释的方法,以及这些方法。即使未使用这些方法(和所属类)也应保留。我在.pro-file中写的是:-keepclassmembersclass*{@Keep*;}-keepclasseswithmembersclass*{@Keep*;}但它会缩减带有@Keep方法的类(如果它们未被使用)。然后我试试这个:-keepclass*{@Keep*;}它只保留所有类。那么,我应该在.pro-file中写什么呢?更新1:示例感谢您的回答。但是我已经使用了完全限定的注解名称并包含了带有注解的JAR,但它并没有达到我想要的效果。所以,我准备了一个样本。我有2个JA

java - 锁定类的静态成员

Accordingtomyunderstanding,thefollowingpieceofcodeshouldresultinadeadlock.Thereasonbeing,whenthreadt1locksstaticobjectfirstData,hehasacquiredalockontheclass.So,whenhetriestolockanotherstaticobjectsecondData,therequestshouldblock.However,theprogramrunsfineandprints***Successfullyacquiredboththelo

java - 无法在 scala 中设置名为 type 的 java 注释成员?

我正在尝试将一些java代码移植到scala。该代码使用带有名为type的成员的注释,但这是scala中的关键字。有没有办法在scala中解决这个有效的java成员?这是Java代码@Component(name="RestProcessorImpl",type=mediation//Compileerror)publicclassRestProcessorImpl{//impl}这部分代码在scala中是相同的,除了type是一个关键字,所以它不会编译。有没有办法转义type关键字?这也是带有type成员的java类的问题HasType.javapackagespike1;publi

java - java类成员的访问级别

我意识到这是一个非常基本的问题,但它一直困扰着我。据我了解,如果您在Java中声明一个字段为私有(private),那么它在该类之外是不可见的。如果它受到保护,那么它可用于继承的类和同一包中的任何东西(如果这些定义中的任何一个不正确,请纠正我)。这是否意味着不能声明一个只能由继承类访问而不能在同一包中的其他非继承类访问的​​字段?我很欣赏有很多方法可以解决这个问题,但是在某些情况下您会想要这种行为吗?显然上述问题适用于方法和字段。非常感谢。 最佳答案 参见:http://java.sun.com/docs/books/tutoria

java - 私有(private)成员访问 Java

是类级别还是对象级别的私有(private)成员访问。如果是对象级别的,那么下面的代码应该是编译不过的classPrivateMember{privateinti;publicPrivateMember(){i=2;}publicvoidprintI(){System.out.println("iis:"+i);}publicvoidmessWithI(PrivateMembert){t.i*=2;}publicstaticvoidmain(Stringargs[]){PrivateMembersub=newPrivateMember();PrivateMemberobj=newPri