这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:GuicewithparentsclassBook{stringtitle;}classChildrensBookextendsBook{}classScienceBookextendsBook{}我想在子类中注入(inject)书名,例如,childrensBook应该被分配标题“AliceinWonderland”,ScienceBook应该被分配“OntheOriginof物种”。我如何使用Guice完成此操作?(注意我不想覆盖子类中的title字段)
我正在尝试为我的客户端库创建javadoc。在MyOtherClass中,我将@see放在下面,并收到警告。MyOtherClass和MyClass都在同一个项目的不同包中。@seeMyClass#Constructor(Type1param1,Type2param2)warning-Tag@see:referencenotfound:MyClass#Constructor(Type1param1,Type2param2)然后我试了一下@seeMyClass#MyClass(Type1param1,Type2param2)warning-Tag@see:referencenotfoun
在扩展javax.swing.JFrame时,推荐使用setTitle("Title")或super("Title")设置标题的方法是什么在性能方面? 最佳答案 如果您对JFrame(在OpenJDK6-b14中)进行grepcode,并深入挖掘,您会看到构造函数JFrame()调用了构造函数Frame(),它调用Frame("")(link)。因此,如果您自己不指定对任何super构造函数的调用,则会添加隐式super(),因此调用会更有效(尽管非常轻微)super(“标题”)。 关于
我经常使用这个模式:classBlahinta;doubleb;Stringc;Dated;publicBlah(inta,doubleb,Stringc,Dated){super();//possiblythis.a=a;this.b=b;this.c=c;this.d=d;}对于如此简单的事情,这确实是大量的样板文件。我在想一个通用的对象工厂来通过内省(introspection)来做到这一点,但这感觉非常邪恶(特殊情况、继承和速度问题)。可以使用Guice并完全跳过构造函数,但是手动创建对象会很丑陋。这是我必须在Java中忍受的东西,还是有办法避免这种样板文件?
在Java中,有什么方法可以将对象创建过程中发生的步骤分开:内存分配对象构造换句话说,是否存在准确映射字节码指令new(内存分配)和invokespecial(对象构造)的高级构造(可能使用反射?)。没有特别的用法,更像是一个好奇的东西。 最佳答案 不,JDK中没有这方面的API(反射或其他方式)。但是,您可以在运行时使用执行此操作的库来操作字节代码本身。例如,http://asm.ow2.org/ 关于java-创建一个未构造的对象实例,我们在StackOverflow上找到一个类似的
publicclassApp{privatefinalAa;privatefinalServerserver;publicApp(){a=newA(this);//Bad,thisisescapingbeforeit'sinitialized.}@Subscribe//ThiseventfiressometimeafterAppisfinishedconstructing.publicvoidregisterStuff(RegisterEventevent){server=event.getServer();//Notpossibleduetofinalfieldandthisnotb
假设我有一个不可变的DecimalNumber类:publicfinalclassDecimalNumber{publicfinalStringstr;publicDecimalNumber(Stringstr){this.str=str;}publicDecimalNumber(DecimalNumbercopy){this(copy.str);}publicbooleanisZero(){...}publicDecimalNumberadd(DecimalNumberother){...}...}我决定像这样实现add:publicDecimalNumberadd(DecimalN
我无法编译此代码。classHorse{privateintage;Horse(intage){this.age=age;}}classPonyextendsHorse{privateintage;Pony(intage){//herecompilercomplainsaboutnodefaultconstructorinparentclassthis.age=age;}}我知道当父类只有带有参数的构造函数时,您必须为子类定义一个构造函数,这就是我所做的。但是,编译器会提示父类没有默认构造函数。我得出父类总是需要默认或无参数构造函数的结论是否正确?如果我希望父类和子类只有带参数的构造函
我得到了在登录java时使用此语法的建议:if(logger.isLoggable(Log.FINE)){logger.fine("bla"+"bla"+"bla");}这样做的原因是为了避免在日志记录级别低于“FINE”时重复构造参数字符串。(在上面的示例中-5个冗余字符串对象。(“bla”X3、“blabla”和“blablabla”)。我想听听其他人对此做了什么,或者您是否认为这有必要。谢谢!! 最佳答案 一些较新的日志记录框架允许您将参数指定为参数,如果没有日志记录则不会评估它们。我找到的例子是LogBack,它是Log4j
我有以下Java示例类:publicclassA{}publicclassSuper{protectedSuper(){}publicSuper(Aa){}}publicclassSubextendsSuper{}publicclassConsumer{publicConsumer(){Subsub=newSub(newA());//compilererror}}编译器错误指出参数不能应用于Sub中的默认构造函数,这是完全可以理解的。我很好奇的是这个决定背后的理由。Java在Sub中生成默认的空构造函数;为什么在这种情况下不能在幕后调用它?这主要是理智的手持情况,还是有技术原因?编辑我