草庐IT

java - 当方法之间的差异是参数子类型时,将 null 传递给重写的方法

这个问题在这里已经有了答案:WhichoverloadwillgetselectedfornullinJava?(3个答案)StrangeJavanullbehaviorinMethodOverloading[duplicate](4个答案)关闭9年前。输出:B为什么虚拟机调用这个方法f(null){System.out.println("B");}?为什么不是f(null){System.out.println("A");}publicclassTest{publicstaticclassA{}publicstaticclassBextendsA{}publicvoidf(Aa){S

java - Hibernate:将基类的实例更改为子类

我想将一个具体的父类(superclass)更改为其子类之一。我在下面包含了一个示例:@Entity@Table(name="employees")@Inheritance(strategy=InheritanceType.JOINED)publicclassEmployee{@Id@Column(name="id")privateStringid;publicEmployee(Stringid){this.id=id;}...}@Entity@Table(name="managers")@PrimaryKeyJoinColumn(name="id",referencedColumnN

java - 在Java中,是否可以通过父类的子类的构造函数来调用父类的父类(super class)构造函数?

我知道措辞有点困惑和奇怪,但请耐心等待,我不知道如何用更短的措词来表达。假设你有一个名为SuperBlah的类,你在一个名为Blah的类中继承了它,然后你将Blah继承到一个名为ChildBlah(所以SuperBlah-Blah-ChildBlah)。如果Blah没有构造函数?对于那些拒绝的人,那为什么这有效?我们有一个名为BlusterBug的类,它扩展了Critter类,并在BlusterBug的构造函数中调用了super。Critter没有构造函数,但Critter扩展的类有构造函数。(我故意省略了类的其余代码)publicclassBlusterCritterextendsC

java - 将父类(super class)对象作为参数传递给子类构造函数(java)

我已经做了一些搜索,但我要么没有问正确的问题,要么没有记错。无论如何,在Java中,我想知道是否可以将父类(superclass)对象作为参数传递给子类,以及使该对象的数据可用于该类的父类(superclass)的最有效方法是什么。代码示例:publicclasssuperclass{Stringmyparm1;StringmyParm2;intmyParmN;publicsuperclass(Stringp1,Stringp2,intpn){this.myparm1=p1;this.myparm2=p2;this.myParmN=pn;}//othermethodshere}publ

Java:主类中的递归调用子类方法而不是它自己的方法

例子:classMainClass{publicdoIt(){...elsedoIt();}}classSubClassextendsMainClass{@OverridepublicdoIt(){super.doIt();...}}现在的问题是:我调用SubClass.doIt()MainClass.doIt()被调用MainClass.doIt()进行递归调用doIt()但是:调用SubClass.doIt()而不是MainClass.doIt()这是非常奇怪的行为,问题是程序化的!我试图用this.doIt()调用递归,但这没有帮助。有人有想法吗?非常感谢您的回答,这个问题已经解

java - 子类 catch block 会捕获已检查的父异常吗?

我有一个父类的检查异常的方法,它可以抛出父类和子类类型的异常publicvoidmethod()throwsParentException{if(false)thrownewParentException();elseif(true)thrownewChildException();//thisoneisthrown}我有一个级联捕获block,它首先有子异常try{method();}catch(ChildExceptione){//Igethere?}catch(ParentExceptione){//orhere?}哪个block会捕获抛出的异常?由于该方法仅显式声明了Paren

java - 需要使用泛型将列表过滤到特定的子类

我有一个包含某个父类(superclass)(如Vehicle)的List,我想编写一个方法来返回该列表中的对象,这些对象是某个子类(如Car)的实例.到目前为止我有这个,但它会生成一个典型的“未经检查”的操作编译器警告:publicListgetVehiclesOfType(Classtype){Listresult=newArrayList();for(Vehiclevehicle:getVehicles()){if(type.isAssignableFrom(vehicle.getClass())){result.add(type.cast(vehicle));//Compile

java - 如何将 protected 方法访问限制为仅子类

我们如何才能将任何protected方法的访问限制为任何包中的子类,而不是同一包中的类。如果任何类不是子类并且在同一个包中,它也必须抛出异常,如“protected方法”。编辑:有没有办法检查调用类名实例,然后我们可以使用instanceof进行验证。 最佳答案 这是不可能的。您可以在protected修饰符(子类+同一包中的类)和默认修饰符(同一包中的类)之间进行选择。没有第三种选择。此外,您也无法在运行时轻松强制执行此操作,因为查找调用代码的类名和包并不简单。请参阅:HowdoIfindthecallerofamethodusi

尝试使用父类方法时Java调用子类方法

如果我有两个类,A和B,publicclassA{publicinttest(){return1;}}publicclassBextendsA{publicinttest(){return2;}}如果我这样做:Aa1=newB(),那么a1.test()会根据需要返回2而不是1。这只是Java的一个怪癖,还是有某种原因导致这种行为? 最佳答案 这叫做polymorphism.在运行时,将根据a1的“真实”类型调用正确的方法,在本例中为B。正如维基百科所说:Theprimaryusageofpolymorphisminindustry

java - 我有一个带有 @ExceptionHandler 的父类和一个带有自己版本的子类。我收到一个不明确的方法错误

父级:@ExceptionHandler(NoUserException.class)protectedModelAndViewhandleException(NoUserExceptione){Mapmodel=newHashMap();model.put(ModelKeys.HOST_KEY,"message");returnnewModelAndView("noAccess",model);}child:@ExceptionHandler(NoUserException.class)protectedvoidhandleException(NoUserExceptione,Htt