jjzjj

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

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

Java:当 super 的参数是可变参数时,如何要求子类调用 super()

我有一个抽象类,它有一个采用可变参数的构造函数。Java编译器似乎并不要求子类调用super(),即使每个构造函数都有参数。publicabstractclassParent{publicParent(String...varargs){}}publicclassChildextendsParent{//Iwouldlikethistobeacompileerror.Childshouldalwayscallsuper().}如何编写Parent以便子级必须调用super()? 最佳答案 varargs方法的目的是允许程序员单独编写

java - 如何使用 Mockito 或任何其他相关的 java 框架模拟父类(super class)方法

我的场景如下classSuperClass{publicvoidrun(){System.out.println("IamrunninginSuperclass");}}classChildClassextendsSuperClass{publicvoidchildRunner(){System.out.println("Step1");System.out.println("Step2");**run();**System.out.println("LastStep");}}现在我想测试ChildClass的childRunner()方法,因为这个方法在内部调用父类(supercla

Java 'reduceLeft' 签名/下界类型参数

以下签名在Scala中有效且常用:traitCollection[A]{defreduceLeft[B>:A](f:(B,A)=>B):B}但是,由于>:是super的Scala等价物在Java中,我转换此签名的第一个想法(将函数类型替换为BiFunction并使用Use-Site方差注释也称为有界通配符)将是interfaceCollection{BreduceLeft(BiFunctionmapper)}但是哦不!编译器提示super中的token因为你不能有下界类型变量!现在,我该如何用Java代码编写此方法,而不必回到Java世界中不存在泛型的时候?是的,我知道你认为我可以使用

Java Reflection - 从子类和父类(super class)中获取字段

我正在为我的项目使用继承的bean类。这里一些父类(superclass)将是空的,子类可以有字段&一些子类将是空的,父类(superclass)可以有字段。我的要求是从Sub类获取所有私有(private)/公共(public)字段以及从Super类获取所有公共(public)/protected字段。下面是我尝试实现的。但是我没有达到我的要求。请提供一些建议来实现这一目标。Fieldfields[]=obj.getClass().getSuperclass().getDeclaredFields();如果我使用上面的代码,我只能得到父类(superclass)字段Fieldfiel

java - 使用仅调用重写的父类(super class)方法的子类方法有好处吗?

在重构时,我在子类中遇到了以下方法:publicvoiddisposeResultsTable(){super.disposeResultsTable();}保留此方法而不是简单地允许调用继承的父类(superclass)方法有什么好处? 最佳答案 我能想到的唯一技术原因是Michael在评论中提出-使受限方法成为public。不过,我能想到一些人为的原因。例如,这可能是放置断点的方便位置,用于调试子类的disposeResultsTable调用。或者这可能是作为一个占位符-“记得为这个类实现这个方法”,或者可能有人想明确地向这段代

java - 检查注释处理器中是否缺少父类(super class)

在注释处理器中获取TypeElement时,您可以使用方法getSuperClass()。AccordingtotheJavaDoc,一个没有显式扩展任何东西的类型(换句话说,Object是父类(superclass))或者是一个接口(interface)将返回一个NoType和NONE作为TypeKind。不管整个模型/镜像API似乎都会在一瞬间让您感到困惑的事实,我如何可靠地检查这一点?以下是一些代码摘录://CastissafesinceTypeKindischeckedbeforethisfinalTypeElementel=(TypeElement)annotatedElem

java.util.Comparator.naturalOrder 采用 <T extends Comparable<? super T>> 并返回一个 Comparator<T> - 为什么?

(如果这是重复的,请指出正确的答案!我搜索并阅读了几个(>5)个相关问题,但似乎没有一个是正确的。还查看了泛型常见问题解答和其他来源...)当一个集合类接受一个比较器时,它应该具有Comparator类型显然是正确的做法。对于您的参数化类型T.你可以看到很多地方,例如TreeMap.好的。我的问题是使用Comparator.naturalOrder()在TextendsComparable上参数化但返回Comparator.我试图在我的集合类中有一个字段,它包含用户指定的比较器或Comparator.naturalOrder比较器。我无法让它工作。我的所有相关问题是:怎么样Compar

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

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

java - 在 Java 序列化中对 xml 父类(super class)元素进行排序

我在使用JAXB的JAVA中有两个类ParentClass和ChildClass。子类扩展父类。当我序列化ChildClass的对象时,在生成的XML中,ParentClass属性首先出现,我希望首先具有ChildClass属性,然后是ParentClass属性。这可能吗?谢谢 最佳答案 JAXB这样做的原因是为了匹配XML模式中的继承。但是,您可以执行以下操作:标记父@XmlTransient在子类上设置propOrder父级importjavax.xml.bind.annotation.XmlTransient;@XmlTran