草庐IT

来自模板化对象的 Java 8 功能构造函数

我正在使用EclipseLuna服务版本2(4.4.2),Java8u51。我正在尝试创建一个方法,该方法将根据另一个方法参数创建传递对象的实例。原型(prototype)简化为publicTtest(Objectparam,Tinstance){Constructorconstructor=instance.getClass().getConstructors()[0];//Iactuallychooseaproperconstructor//eclipsereports"UnhandledexceptiontypeInvocationTargetException"Function

java - 为什么 Java 找不到我的构造函数?

好吧,也许这是一个愚蠢的问题,但我无法解决这个问题。在我的ServiceBrowser类中,我有这一行:ServiceResolverserviceResolver=newServiceResolver(ifIndex,serviceName,regType,domain);编译器会提示。它说:cannotfindsymbolsymbol:constructorServiceResolver(int,java.lang.String,java.lang.String,java.lang.String)这很奇怪,因为我在ServiceResolver中确实有一个构造函数:publicvo

java - 在里面调用新线程是构造函数

像这里那样创建一个线程并在类的构造函数中调用它的start()方法是否正确?publicclassServerimplementsRunnable{privateServerSocketserver;publicServer(intport){try{//Opensanewserverserver=newServerSocket(port);}catch(IOExceptionioe){ioe.printStackTrace();}newThread(this,"Server").start();}@Overridepublicvoidrun(){}} 最佳

Java:传递相同对象作为参数的对象构造函数

我创建了一个名为Transaction的对象,我将其传入ArrayQueue。这是Transaction类的构造函数(我也有合适的setter和getter):publicclassTransaction{privateintshares;privateintprice;publicTransaction(intshares,intprice){this.shares=shares;this.price=price;}publicTransaction(Objectobj){shares=obj.getShares();price=obj.getPrice();}}在第二个构造函数中,

java - 使用 'this' 作为构造函数中方法调用的参数

我有一个构造函数如下:publicAgent(){this.name="John";this.id=9;this.setTopWorldAgent(this,"Top_World_Agent",true);}我在方法调用中遇到空指针异常。这似乎是因为我在setTopWorldAgent方法中使用“this”作为参数。通过删除此方法调用,一切看起来都很好。为什么会这样?有没有其他人遇到过这种情况? 最佳答案 您可以将其传递给方法,但setTopWorldAgent()不能是抽象的。您不能在构造函数中进行虚拟调用。在对象的构造函数中,您

java - 为什么 Java 构造函数必须是 public 或 protected 才能将类扩展到其包之​​外?

以下是我的ProtectedConstructor.java源码:packageprotectCon;publicclassProtectedConstructor{publicintnothing;ProtectedConstructor(){nothing=0;}}下面是UsingProtectedCon.java来源:packageother;importprotectcon.ProtectedConstructor;publicclassUsingProtectedConextendsProtectedConstructor{//**Line4**publicstaticvoi

java - 在构造函数中实例化对象

下面这段代码的结果好像是一样的,到底什么时候用呢?publicclassPerson{publicPerson(){this.family=newFamily();}Familyfamily;}到publicclassPerson{Familyfamily=newFamily();}(我能想到的一种情况是,当有多个构造函数时,我们只想在其中一个构造函数中创建一个family实例……是唯一的情况吗?) 最佳答案 对于类变量[静态变量],您不能使用第一个,因为您希望初始化只发生一次,而不是每次调用构造函数时都发生。例如变量,第二个只是第

java - 使用 ArrayList 参数复制构造函数

我正在尝试为一个对象创建一个复制构造函数,其中一个参数是一个ArrayList。在创建ArrayList对象时,我想使用ArrayList构造函数,您可以在其中将集合作为参数传递,但我不确定这是否可以用作指向数组列表的“指针”,或者是否可以创建一个全新的数组列表对象这是我的代码publicMyObject(MyObjectother){this.brands=other.brands;this.count=other.count;this.list=newArrayList(other.list);//willthiscreateanewarraylistwithnopointerst

java - 如果构造函数抛出异常,是否不调用 try-with-resources 习惯用法的 close 方法?

我有一个基类Base和一个扩展它的子类Child。Base实现了java.lang.AutoCloseable。假设Child的构造函数抛出一个Foo。现在考虑try(Basec=newChild()){/*Somecode*/}catch(finalFooe){/*Somemorecode*/}如果抛出异常,是否调用Base#close方法?它不在我的机器上,但这是JLS标准化的东西吗? 最佳答案 是的,close不会被调用。这在JLSsection14.20.3中指定:Resourcesareinitializedinleft-

java - 当我在类的构造函数中声明并初始化字段时,为什么我的字段被初始化为 null 或默认值零?

这是针对类似问题的规范问答,其中问题是隐藏的结果。我在我的类中定义了两个字段,一个是引用类型,一个是原始类型。在类的构造函数中,我尝试将它们初始化为一些自定义值。当我稍后查询这些字段的值时,它们会返回Java的默认值,引用类型为null,原始类型为0。为什么会这样?这是一个可重现的例子:publicclassSample{publicstaticvoidmain(String[]args)throwsException{StringArrayarray=newStringArray();System.out.println(array.getCapacity());//prints0S