Class.newInstance在Java9中被弃用:clazz.newInstance()canbereplacedbyclazz.getDeclaredConstructor().newInstance()问题是getDeclaredConstructor返回任何构造函数而不考虑访问级别。如果我想替换我的代码中所有出现的地方(在不同的包/访问级别),我应该使用getConstructor获得公共(public)构造函数?theConstructorobjectofthepublicconstructorthatmatchesthespecifiedparameterTypes或者
引用我的earlierquestiononincompletelyconstructedobjects,我有第二个问题。正如JonSkeet指出的那样,在构造函数的末尾有一个隐式内存屏障,它确保final字段对所有线程都是可见的。但是,如果构造函数调用另一个构造函数怎么办?他们每个人的末尾都有这样的内存障碍,还是仅在首先被调用的那个的末尾有这样的内存障碍?也就是说,当“错误”的解决方案是:publicclassThisEscape{publicThisEscape(EventSourcesource){source.registerListener(newEventListener()
据我所知,在Java中,隐式构造函数总是为没有构造函数的类生成[1],[2].但是在字节码中我找不到关于JVMS的限制。.所以:根据JVMS定义一个没有构造函数的类,仅使用其静态方法是否有效,如以下jasminhelloworld所示?除了无法创建它的实例之外,它还有其他后果吗?我将无法使用invokespecial来初始化实例,根据https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.10.2.4这使得new无用(不能使用未初始化的对象)。Jasmine代码:.classpublicMain.sup
要在Java中使用人为的示例,代码如下:enumCommands{Save("S");File("F");privateStringshortCut;privateCommands(StringshortCut){this.shortCut=shortCut;}publicStringgetShortCut(){returnshortCut;}}我有以下测试/驱动程序代码:publicstaticvoidmain(Stringargs[]){System.out.println(Commands.Save.getShortCut());}问题是:在Java中,什么时候调用枚举常量的构造
关于@ConstructorPropertiesDocumentation说“构造函数上的注释,显示该构造函数的参数如何对应于构造对象的getter方法”。它给出了一个模棱两可的例子,因为变量名与参数相同。我真的不明白为什么@ConstructorProperties({"x","y"})引用gettersgetX()和getY()。x和y的大小写与注释不一致。所以为了阐明这段代码中构造函数的注解应该是什么:publicclassPoint{publicPoint(inta,intb){this.c=a;this.d=b;}publicintgetCc(){returnc;}publi
我遇到了这个异常但已解决。java.lang.NoSuchMethodError:antlr.NoViableAltForCharException.(CLjava/lang/String;II)V但我想知道如何解释这些消息:“(CLjava/lang/String;II)V”此外,这个“init”是否提到了NoViableAltForCharException类的构造函数??谢谢。 最佳答案 类型签名-取自thispage.JNI使用JavaVM的类型签名表示。表3-2显示了这些类型签名。ZbooleanBbyteCcharSsh
如果我有2个类,“A”和“B”,我如何创建一个通用工厂以便我只需要将类名作为字符串传递来接收实例?例子:publicstaticvoidfactory(Stringname){//AnexampleofanimplmentationIwouldneed,thisobviouslydoesn'tworkreturnnewname.CreateClass();}谢谢!乔尔 最佳答案 Classc=Class.forName(className);returnc.getDeclaredConstructor().newInstance()
如果对象的构造函数出现异常,是否有关于是否使用finalize()清理对象的任何详细信息。这个方法何时被调用是出了名的错误定义。根据手册:TheJavaprogramminglanguagedoesnotguaranteewhichthreadwillinvokethefinalizemethodforanygivenobject.Itisguaranteed,however,thatthethreadthatinvokesfinalizewillnotbeholdinganyuser-visiblesynchronizationlockswhenfinalizeisinvoked.I
假设您正在创建一个像这样的java对象:SomeClasssomeObject=null;someObject=newSomeClass();什么时候someObject变为非空?是在SomeClass()构造函数运行之前还是之后?为了澄清一点,假设另一个线程要检查someObject是否为null而SomeClass()构造函数已完成一半,它是null还是非-空?此外,如果像这样创建someObject会有什么不同:SomeClasssomeObject=newSomeClass();someObject会是null吗? 最佳答案
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion构造函数也可以像任何其他方法一样被重载,我知道这一点。由于一项任务,我决定使用具有多个构造函数的抽象父类(superclass):抽象父类(superclass):protectedListSortierer(){this(null,null);}protectedListSortierer(Listli){this(li,null);}protectedListSortierer(Com