草庐IT

构造器

全部标签

java - 使用异常处理消除子类构造函数中不相关的异常

我正在用Java编写一个类,它是我编写的另一个类的子类,它的构造函数显式调用父类(superclass)的构造函数。父类(superclass)的构造函数在直接初始化时可能会抛出几种类型的异常,但是当我初始化我的子类的实例时,有几种永远不会抛出的异常(按设计)。我尝试在子类的构造函数中捕获这些异常,但我收到一条错误消息,指出“构造函数调用必须是构造函数中的第一条语句”。为什么我无法捕获这些异常?例如下面的代码:publicclassPersian_CatextendsCat{publicPersian_Cat(Filefile){try{super(file);}catch(Inval

java - Spring 不使用带注解的构造函数(@JsonCreator)进行实例化

我正在使用带有JavaConfig和Jackson2.4.3的Spring4.1.1。我的Controller看起来像这样:@RestControllerpublicinterfacePatientWebService{@RequestMapping(value="/patients",method=POST)PatientResourcecreatePatient(@RequestBodyPatientResourceresource);}我发送的json看起来像这样:{"firstName":"Max","lastName":"Mustermann","birthDate":"19

java - 从 Java 内存模型的角度理解为什么在构造函数中启动线程是不安全的

这个问题在这里已经有了答案:Whyshouldn'tIuseThread.start()intheconstructorofmyclass?(2个答案)关闭3年前。根据JavaConcurrencyinPractice,在类构造函数中启动线程是危险的。原因是在对象完全构造之前,this将this指针暴露给另一个线程。尽管这个话题在之前的许多StackOverflow问题中都有讨论,但我仍然难以理解为什么这是一个如此令人担忧的问题。特别是,我希望从Java内存模型的角度澄清在构造函数内启动线程是否会导致内存一致性问题。让我举一个具体的例子来说明我想做的事情。(这段代码的期望输出是将数字2

java - 构造函数中的依赖注入(inject)

假设我有Spring服务类或JSFbean。我将这些类连接到另一个类中。到目前为止没有问题。我可以在任何方法中使用这些注入(inject)字段。但是,在构造函数中使用它们会给我一个NullPointerException。可能构造函数在依赖注入(inject)发生之前运行,并且它没有看到我注入(inject)的字段。有没有在构造函数中使用依赖注入(inject)的解决方案? 最佳答案 不,您不能在构造函数中引用注入(inject)字段。框架必须以某种方式构造您的对象(调用构造函数),然后注入(inject)依赖项,以便它们在构造函数

java - 在运行时检查类是否具有使用泛型的特定构造函数

大家好:)我正在尝试在类中选择正确的构造函数。这是代码:Constructor[]constructors=targetClass.getConstructors();ConstructorgoodConstructor=null;for(Constructorconstructor:constructors){Class[]parameterTypes=constructor.getParameterTypes();if(parameterTypes.length=1&¶meterTypes[0].equals(Map.class)){//heregoodConstructo

java - JNI GetMethodID 不适用于内部类的构造函数

我有一个带有私有(private)子类的类。我想在JNI包装器中创建该子类的实例并将其返回。我用谷歌搜索并试图让它工作但没有成功(methodID为空)。有什么建议吗?JNIEXPORTjobjectJNICALLJava_some_Class_some_Jni_Method(JNIEnv*env,jobjectthis){jclasscls=(*env)->FindClass(env,"someClass$someSubclass");if(cls==NULL)printf("jclasserror.");jmethodIDmethodID=(*env)->GetMethodID(e

java - 具有公共(public)构造函数而不是 protected 构造函数的抽象类有什么意义吗?

既然抽象类不能被实例化,而且protected成员对子类总是可见的,那么它的构造函数是public还是似乎没有区别em>protected。有没有公共(public)构造函数与protected构造函数相比有所不同的示例?我通常更喜欢适用的最严格的访问级别。 最佳答案 不,没有充分的理由为抽象类创建公共(public)构造函数:如果不首先对其进行子类化,则无法实例化抽象类,并且该语言会为您处理相关的极端情况。特别是,如果您要匿名子类化您的抽象类,这意味着您无法在子类中提供您自己的构造函数,该语言将根据抽象基类的protected构造

java - 从集合构造 PriorityQueue 的时间复杂度是多少?

带有Collection的JavaPriorityQueue构造函数的复杂性是什么?我使用了构造函数:PriorityQueue(Collectionc)复杂度是O(n)还是O(n*log(n))? 最佳答案 从集合(即使是未排序的集合)中初始化PriorityQueue的时间复杂度为O(n)。这在内部使用了一个名为siftDown()的过程来就地“堆化”数组。(这在文献中也被称为下推。)这是违反直觉的。将一个元素插入堆中似乎是O(logn),因此插入n个元素会导致O(nlogn)复杂度。如果您一次插入一个元素,就会出现这种情况。(

java - 对象构造函数是否有合法用途?

以下代码的合法用途是什么?Objecto=newObject();据我所知,这个对象没有用处,也没有携带任何真实数据(除了它的哈希码)。为什么要用这个?这是可以接受的做法吗?如果我能够做到这一点,我是否可以显式扩展对象类。 最佳答案 FromwhatIunderstandthisobjecthasnouseandcarriesnorealdata(exceptformaybeitshashcode)对象带有它的身份和它的monitor.这就是为什么使用此赋值来创建与对象本身分离的对象监视器的原因。Whywouldthisbeused

java - 将 super/this 构造函数调用中抛出的异常包装到其他异常中

我希望我的模块的api仅在出现任何错误且模块无法执行其任务时抛出MyPackageSpecificException。(原始异常将作为MyPackageSpecificException的原因给出)。现在,对于一个构造函数,我需要一个URL作为参数来定位资源。我还想制作一个替代构造函数,可以为其提供URL的字符串表示形式:publicMyClass(StringurlString)throwsMalformedURLException{this(newURL(urlString));}由于URL构造函数抛出MalformedURLException,我想通过执行以下操作将其包装到MyP