草庐IT

java - 对 super 的调用必须是构造函数中的第一条语句,但它是

我一直收到错误提示“对super的调用必须是构造函数中的第一条语句”。问题是它是我的构造函数中的第一条语句。publicvoidCheckingAccountCustomer(inta){super(n,p,b);accountNo=a;}这也是我的父类(superclass)。publicvoidcustomer(Stringn,intp,doubleb){name=n;pin=p;balance=b;}我在这里做错了什么? 最佳答案 这段代码publicvoidcustomer(Stringn,intp,doubleb){不是构

java - 获取抽象父类(super class)上泛型类型参数的实际类型

我有一个类:publicabstractclassBaseDao{protectedClassgetClazz(){returnT.class;}//...}但是编译器对T.class;说:IllegalclassliteralforthetypeparameterT。如何获取T类? 最佳答案 绝对有可能从Class#getGenericSuperclass()中提取出来因为它不是在运行时定义的,而是在编译时由FooDaoextendsBaseDao定义的.这是一个启动示例,您可以如何在抽象类的构造函数中提取所需的泛型父类(supe

java - 为什么 'T.super.toString()' 和 'super::toString' 使用合成访问器方法?

考虑以下表达式集:classT{{/*1*/super.toString();//direct/*2*/T.super.toString();//syntheticSuppliers;/*3*/s=super::toString;//synthetic/*4*/s=T.super::toString;//synthetic}}结果如下:classT{T();0aload_0[this]1invokespecialjava.lang.Object()[8]4aload_0[this]5invokespecialjava.lang.Object.toString():java.lang.S

java - 在 Java 中使用泛型存储公共(public)父类(super class)型

假设我有一个方法“mix”,它接受两个可能不同类型T和S的列表,并返回一个包含两者元素的列表。为了类型安全,我想指定返回的列表是R类型,其中R是T和S共有的父类(superclass)型。例如:Listfoo=mix(Arrays.asList(1,2,3),Arrays.asList(1.0,2.0,3.0));要指定这一点,我可以将方法声明为staticListmix(Listts,Listss)但是如果我想制作mix怎么办?实例方法而不是静态方法,在类List2上?Listmix...隐藏在List2的实例上,所以这不好。Listmix...解决了阴影问题,但不被编译器接受Lis

java - 对象类作为 Java 中的父类(super class)

为什么对象类是Java中的父类(superclass)? 最佳答案 这是个好问题。Java选择让一个类成为所有事物的最终父类,这样就可以轻松传递任意对象,而无需知道其类型(即,您可以使用声明的Object类型来引用每个项目在类型系统中,甚至使用它们的包装类的基元)。但是,有些OOP语言(例如C++)没有Java中的通用基类。拥有通用基类的另一个好处是处理父类(superclass)的逻辑不必针对顶级类进行特殊处理(通用基类Object本身除外)。 关于java-对象类作为Java中的父类

java - 如何强制对 super 方法进行多态调用?

我有一个init方法,它在广泛的层次结构中被使用和覆盖。然而,每个init调用都扩展了前一个所做的工作。所以很自然地,我会:@Overridepublicvoidinit(){super.init();}这自然会确保调用和实例化所有内容。我想知道的是:我可以创建一种方法来确保调用super方法吗?如果所有的init都没有被调用,那么对象就会发生故障,所以我想在有人忘记调用super时抛出异常或错误。TYFT~Aedon 最佳答案 而不是尝试这样做——顺便说一句,我认为这是不可能实现的!--一种不同的方法怎么样:abstractcla

java - 在 super() 的参数列表中调用静态方法在 Java 中是有效的。为什么?

让我们看看下面的Java代码片段。packagetrickyjava;classA{publicA(Strings){System.out.println(s);}}finalclassBextendsA{publicB(){super(method());//Callingthefollowingmethodfirst.}privatestaticStringmethod(){return"methodinvoked";}}finalpublicclassMain{publicstaticvoidmain(String[]args){Bb=newB();}}按照约定,Java中的su

java - 外部与 super 类

super是否比外部类有更高的优先级?考虑我们有三个类:A级B级ClassB中扩展ClassA的匿名类A类.java:publicclassClassA{protectedStringvar="AVar";publicvoidfoo(){System.out.println("Afoo()");}}类B.java:publicclassClassB{privateStringvar="BVar";publicvoidtest(){newClassA(){publicvoidtest(){foo();System.out.println(var);}}.test();}publicvoi

java - 在一个类中同时实现 super 接口(interface)和子接口(interface)(A类实现SuperInterface,SubInterface)

interfaceA{publicvoiddoSomething();}interfaceBextendsA{publicvoiddoSomethingElse();}publicclassAClassimplementsA,B{publicvoiddoSomething(){}publicvoiddoSomethingElse(){}}为什么Java允许这样的声明?当通过实现子接口(interface)(B)可以实现相同的目的时,实现这两个接口(interface)有什么用? 最佳答案 我认为“为什么”这个问题只能由Java设计人

Java Reflection,为什么在运行时保留父类(super class)型类型参数

所以java有类型删除,它删除类型参数(在运行时没有泛型类型)。有人可以解释为什么要保留父类(superclass)型类型参数吗?classStringListextendsArrayList{publicTypegetType(){Type[]typeArguments=((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments();returntypeArguments[0];}}这基本上意味着:newArrayList()//Icannotusereflectiontofin