构造函数

java – 有没有办法避免构造函数传递类?

考虑这个HashMap扩展它的用法是这样的在我看来,两次提供“部分”一次多余,一次作为通用类型,并且还提供它的类.我认为这是不可能的,但是有没有实现HashMapSafe,所以它可以像这样使用?我不是在编译器前面,我在第一次尝试时永远无法获得方法类型参数,但它会像这样……

java – Guice – 如何实现返回不同实现的工厂

或者它会获得由Guice创建的factoryImpl吗?谢谢解决方法您现有的实施是最好的.为清楚起见,我们写出一般的IPaymentFactory:所以IPaymentFactory的实例定义了一个方法,它接受一些参数并返回一个IPayment实例.你可以自己编写一个实现,显然你有,但Guice的FactoryModuleBuilder自动提供这样的接口实现.你永远不需要定义关于该类的任何其他内容:Guice将为您构建构造函数,并将其绑定到IPaymentFactory,以便您可以注入IPaymentFa

java – 为什么在超类的构造函数之后初始化成员对象?

既然我们实例化了一个Foo类型的对象,它的成员是否应该在调用它构造函数之前被分配和赋值?这是在Java语言中指定的,还是特定于JVM的?感谢您的任何见解!解决方法bar=“fooBar!”的赋值;在编译期间内联到构造函数中.超类构造函数运行before子类构造函数,因此事后执行该语句是很自然的.但一般来说,从构造函数调用可覆盖的方法是badpractice.

java – 如何使用带有varargs构造函数的JUnit参数化运行器?

解决方法现在无法测试它,但我想,如果你调用一个带有变量参数的方法或构造函数,你必须使用数组而不是变量值列表来调用它.如果我是对的,那么这应该有效:一些解释在源代码级别,我们可以写编译器会将其转换为字符串数组.JUnit使用反射和调用API,从这个角度来看,构造函数签名是因此,要调用构造函数–这就是JUnit在内部执行的操作–您必须传递一个整数和一个String数组.

java – Guice:我必须用@Inject注释每个类的对象图吗?

我想介绍Guice是否使用现有的中型项目.对于我的需求,我需要一个自定义范围(会话太大,而对于我的项目请求小).想象一下,我请求guice提供一个类A的实例,它与许多其他类(组合)有直接和间接的依赖关系.我的自定义提供程序能够提供用作所有相关类的构造函数参数的类的实例.题:>我真的必须在所有相关类的构造函数上放置一个@Inject(和我的自定义范围)注释,还是有一种方法,只需要在我请求的顶级类上添

.net – 用字符串初始化的StringBuilder是否包含该字符串的确切(仅)空间?

我的意思是,StringBuilder类的目的是提供对字符串执行大量操作的替代方法,在此过程中创建大量不可变的字符串实例;因此,这是为了提高效率.我觉得应该指定这个构造函数的行为,以便开发人员可以做出明智的决定如何使用它而不管平台.我的意思是,它是由微软以某种方式实现的;他们可以很容易地将其放入文档中.只是个人困惑的来源……

什么是Java中的对象字段初始化和构造函数顺序

我今天早些时候在代码中结束了以下场景(我承认有点奇怪,我已经重构了).当我运行单元测试时,我发现在超类构造函数运行的时候没有设置字段初始化.我意识到我并不完全理解构造函数/字段初始化的顺序,所以我希望有人向我解释这些发生的顺序.来自JUnit的缩写回溯如下,我想我期望$Foo.设置foo.解决方法是的,在Java中(例如,与C#不同)字段初始值设定项在超类构造函数之后调用.这意味着在执

为什么Java的TreeSet没有指定其类型参数必须扩展可比性?

例如当第二个Object添加到TreeSet时,下面的代码会抛出ClassCastException.已经写了TreeSet,所以type参数只能是一个可比较的类型?即TreeSet不会编译,因为Object不可比较.仿制药实际上做了他们的工作–是类型安全的.解决方法如果该类型必须是可比较的,则无法创建具有不可比较类型和比较器的TreeSet(可以像现在这样).一种同时保持类型安全性的方法一直是有

java – 番石榴:为什么方法create()而不是构造函数?

请问,你能解释为什么番石榴的创作者喜欢将构造函数定义为私有的,并且定义静态方法create()来创建对象?解决方法有效的Java项目1:考虑静态工厂方法而不是构造函数.静态工厂方法的一些优点包括:>他们自动推断Java7之前的类型参数.>它们允许我们控制继承模式:我们可以在Guava中子类化集合类型,而不会让外部代码将它们分类.>他们让我们返回所需类型的任意子类,让我们更好地隐藏实现细节.