草庐IT

java - 是否可以在 Java 中扩展没有构造函数的类?

出于单元测试的目的,我正在尝试编写mockobject没有构造函数的类。这在Java中甚至可能吗,该类是不可扩展的吗? 最佳答案 没有构造函数的类有一个隐式公共(public)无参数构造函数,是的,只要它不是最终的,它就可以被子类化。如果该类只有私有(private)构造函数,那么不,它不能。 关于java-是否可以在Java中扩展没有构造函数的类?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

Java从构造函数调用构造函数

我有一个构造函数privateDoublemA;privateDoublemB;Foo(Doublea){mA=a;mB=a+10;}Foo(Doublea,Doubleb){mA=a;mB=b;//somelogichere}如果我像这样调用第二个构造函数:Foo(Doublea){Doubleb=a+10;this(a,b);}编译器告诉我,构造函数应该是第一个语句。那么我是否需要将所有逻辑从第二个构造函数复制到第一个构造函数? 最佳答案 为什么不直接执行this(a,a+10)呢?请注意,this()或super()必须是构造

java - 我可以使用 java.util.LinkedList 构造循环/循环链表吗?

我想创建一个循环/循环链表,其中列表的尾部将指向列表的头部。那么我可以使用java.util.LinkedList并在创建列表后修改尾节点以使其循环/循环吗?如果是这样,你能告诉我一些关于如何发生的代码吗?如果我不能使用java.util.LinkedList,我应该如何创建我自己的循环/循环链表实现?你能告诉我这个实现的框架吗?如果您需要更多详细信息,请告诉我,我会消除任何疑惑。 最佳答案 classListNode{publicListNodenext;publicObjectdata;publicListNode(Object

java - 是否可以在 Java 中使用类似结构的构造?

我正在考虑将Java用于一个大型项目,但我还没有找到任何可以在Java中远程表示结构的东西。我需要能够将网络数据包转换为可在应用程序中使用的结构/类。我知道可以使用RandomAccessFile但这种方式不是可以接受的。所以我很好奇是否可以像在C中那样将一组字节“转换”为结构。如果这不可能,那么我就不能使用Java。所以我要问的问题是,除了指定对齐方式和数据类型之外,是否可以将对齐数据转换为类而无需任何额外工作? 最佳答案 没有。您不能将字节数组转换为类对象。也就是说,您可以使用java.nio.Buffer并轻松地将您需要的字段

java - 在规划继承时,是否允许构造函数调用可重写的方法?

来自EffectiveJava第2版,第17项:Foreachpublicorprotectedmethodorconstructor,thedocumentationmustindicatewhichoverridablemethodsthemethodorconstructorinvokes稍后在同一项目中它说:Constructorsmustnotinvokeoverridablemethods,directlyorindirectly.这两个说法是不是自相矛盾,还是我遗漏了什么? 最佳答案 在构建过程中调用可覆盖的方法是允许

假设不存在数组对象,写下自己的数组构造函数函数。

假设数组对象不存在。我意外的结果...functionmyArray(){vari=0;this.length=0;varargs=arguments;while(args[i]!==undefined){this[i]=args[i];this.length++;i++;}this.tostring=function(){varresult=args[0];for(vark=1;k看答案@jonas_w弄清楚了。非常感谢您,感谢您的概念,这是我的this.unshift()的新代码。this.unshift=function(){varargs2=this.unshift.arguments

java - 通用构造函数的好处

为非泛型类使用泛型构造函数有什么好处?Java规范允许以下内容:classNonGeneric{NonGeneric(){}...NonGenericref=newNonGeneric();}有人能想出一个现实的例子来说明它何时增强了类的类型安全性吗?它比一开始就使用Generic更好。我知道Java设计者希望构造函数与方法更加一致。考虑到构造函数可能有副作用,泛型构造函数可以使用泛型来改变一些不保留引用的参数,如NonGeneric(Tobj,Listlist){list.add(obj);//Don'tholdareferencetolist} 最佳答案

java - 不可变类/对象,私有(private)构造函数,工厂方法

已经阅读了如何通过以下步骤使类不可变不要提供“setter”方法——修改字段或字段引用的对象的方法。将所有字段设为最终字段和私有(private)字段。不允许子类覆盖方法。最简单的方法是将类声明为final。一种更复杂的方法是将构造函数设为私有(private)并在工厂方法中构造实例。如果实例字段包含对可变对象的引用,则不允许更改这些对象:一种。不要提供修改可变对象的方法。b.不要共享对可变对象的引用。永远不要存储对传递给构造函数的外部可变对象的引用;如有必要,创建副本并存储对副本的引用。同样,必要时创建内部可变对象的副本,以避免在方法中返回原始对象。我不确定我是否清楚地理解私有(pr

java - 我怎样才能避免在子类中创建无用的传递构造函数只是为了将参数传递给 "super()"?

在Java中,据我所知,子类不会继承具有参数的构造函数。例如publicclassParent{publicParent(intx){DoSomethingWithX(x);}}publicclassChildextendsParent{//Compilefailswith"ImplicitsuperconstructorParent()isundefined//fordefaultconstructor.Mustdefineanexplicitconstructor}修复它的唯一方法是在Child类中创建一个无用的传递构造函数:publicclassChildextendsParen

java - 如何使用 LambdaMetaFactory 调用构造函数?

我想尝试避免调用构造函数的反射,并尝试遵循本文中采用的LamdaMetaFactory方法-FasteralternativestoJava'sreflection我要构建的类如下所示:interfaceDBBroker{}publicclassNativeBrokerimplementsDBBroker{publicNativeBroker(BrokerPoolbrokerPool,finalConfigurationconfiguration){}}使用LambaMetaFactory我正在尝试构建一个BiFunction替换对构造函数的直接调用。到目前为止,我的代码如下所示:Cl