草庐IT

成员方

全部标签

java - 使用基类实例在派生类中访问的 protected 成员

我在派生类中创建了基类的实例并试图访问protected成员。我可以直接访问派生类中的protected成员,而无需实例化基类。基类:packagecom.core;publicclassMyCollection{protectedIntegerintg;}同一包中的派生类-packagecom.core;publicclassMyCollection3extendsMyCollection{publicvoidtest(){MyCollectionmc=newMyCollection();mc.intg=1;//Works}}不同包中的派生类-packagesecondary;imp

Java 8 对类成员的属性进行排序

类声明:classEntity{Stringname;SubEntitysubEntity;//subEntityhasamethodgetAmount()whichreturnsint}我知道使用Java8我们可以这样排序:entities.sort(Comparator.comparing(Entity::name));但是有没有一种方法可以根据子实体的属性对其进行排序,例如:entities.sort(Comparator.comparing(Entity::SubEntity::getAmount()));P.S:任何一行都全下。 最佳答案

java - Java 枚举中可以拥有的成员数量有多少限制?

假设您在Java中有一个这样的假设枚举(纯粹出于演示目的,这不是我真正希望使用的代码):enumExample{FIRST,SECOND,THIRD,...LAST;}在编译器停止之前,枚举中最多可以包含多少成员?其次,当您的代码引用具有10个成员而不是100或1,000个成员的枚举时(除了存储大型类所需的明显内存开销之外),在运行时是否存在任何性能差异? 最佳答案 语言规范本身没有限制。然而,类文件有许多限制枚举数量的限制,上限为65,536(2^16)个枚举:字段数JVMS4.1指定ClassFile最多可以有65,536(2^

java - 访问内部匿名类成员

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

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

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

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成员,那么它可以以破坏第一个子类契约的方式操纵它们,这是不允许的