草庐IT

Inheritance

全部标签

Java:枚举常量中方法和变量的定义

我正在做一些实验,无意间写了一个代码,这很奇怪,我还没完全明白。我什至可以编译它,我什至感到惊讶。看起来像这样:enumFoo{VALUE_1{publicintmyVariable=1;},VALUE_2{publicvoidmyMethod(){//}},VALUE_3;}不出所料,无法通过以下方式访问此类元素:Foo.VALUE_2.myMethod();原因是,编译器将在枚举本身内寻找该方法。我认为不可能从枚举之外访问这些方法和变量。因此,我尝试创建一个参数构造函数,并使用一些内部变量进行调用:enumFoo{VALUE(internalVariable){intinterna

java - 哪些成员不在子类中继承?

我正在尝试回答以下问题:Achildclasswouldnotinheritcertainmembersoftheparentclass.Namethreesuchmembers.我知道私有(private)成员不会继承到子类,默认成员不会在包外继承。谁能完成答案?编辑:-我相信静态成员是根据下面的演示继承的publicclasssup{publicstaticvoidmain(Stringagr[]){}protectedstaticintstaticInt=0;protectedfinalintfinalInt=3;protectedintprotectedInt=0;public

java - 子接口(interface)如何重用其父接口(interface)的实现?

最近我参加了一个面试,被问到以下问题。给定以下类/接口(interface)结构:问题:如何实现接口(interface)EmployedStudent以重用来自StudentImpl和EmployeeImpl的代码。我建议将Employee和Student组合到我的实现中。根据面试官的react,我认为他们认为这不是最佳解决方案。我花了很多时间思考它,但我无法想出其他解决方案。 最佳答案 创建一个同时实现Employee和Student的类。在您的类中,创建EmployeeImpl和StudentImpl的实例。然后让您的类将所有

java - jackson 忽略外部库中父类(super class)的所有属性

我正在使用ORM进行开发,我在其中扩展基orm类以创建表。例如:publicclassPersonextendsDbItem{@JsonIgnoreprivateStringindex;privateStringfirstName;privateStringlastName;}问题是,当我使用ObjectMapper进行序列化时,它会尝试序列化DbItem类的成员。有什么简单的方法可以防止这种情况发生吗?例如带有注释。我看过一个类似的问题Jacksonserialization:howtoignoresuperclassproperties但我希望它可以做得更简单,我不确定我是否可以这

Java 将特定类的列表添加到 java.lang.Object 的列表与 java 8 流一起工作 - 为什么?

publicclassTest{staticListlistA=newArrayList();publicstaticvoidmain(finalString[]args){finalListlistB=newArrayList();listB.add(newTestClass());//notworkingsetListA(listB);//workingsetListA(listB.stream().collect(Collectors.toList()));System.out.println();}privatestaticvoidsetListA(finalListlist)

java - 在 Java 中扩展泛型的限制,有什么办法可以解决它?

我有以下模型可以在我的应用程序中制作Controller。显然,完整的模型更加复杂,但我将重点关注导致我出现问题的唯一部分:publicabstractAbstractController{abstractprotectedClassgetType();}publicParentControllerextendsAbstractController{@OverrideprotectedClassgetType(){returnParent.class;}}现在我想扩展Parent对象并为儿子创建一个Controller,它看起来像这样:publicSonControllerextend

java - 如何覆盖 Java 中的方法,但仍然具有父方法的部分功能

这个问题是在求职面试、Java开发、学生职位时被问到的。interfaceSomeInterface{publicvoidexecute();}classAimplementsSomeInterface{publicvoidexecute(){...}}问题是:新开发人员被要求创建一个扩展类A的类,并创建名为Execute的方法,该方法将做一些事情。我们应该如何重写上面的代码,以便在调用方法Execute时输出“启动进程”(当然打印不应该在B类)。classBextendsA{publicvoidexecute(){//somecodegoeshere}}我知道可以用两个函数来完成,其

Java继承,扩展类如何影响实际类

我正在查看Sun认证学习指南,其中有一段描述了最终修饰符。它说“如果程序员可以自由扩展我们所知的String类文明,它可能会崩溃”他是什么意思?如果可以扩展String类……我会不会有一个名为MyString的类继承所有Strings属性。仅通过扩展它怎么可能以任何方式更改实际的String类?非常感谢您的回答 最佳答案 嗯,一个问题是,如果您可以子类化String类,您很可能会以无数种方式破坏jvm的安全性。许多权限检查各种字符串值以确定是否允许给定操作。如果您的代码正在提供字符串值,那么您可以返回一个String实例,当安全管理

java - 当从 super() 运行方法时,为什么不将字段初始化为非默认值?

我一定花了一个多小时试图找出某些意外行为的原因。我最终意识到一个字段没有按照我的预期设置。在耸耸肩继续前进之前,我想了解为什么会这样。在运行下面的示例时,我希望输出为真,但结果为假。其他测试表明我总是得到该类型的默认值。publicclassClassOne{publicClassOne(){fireMethod();}protectedvoidfireMethod(){}}publicclassClassTwoextendsClassOne{booleanbool=true;publicClassTwo(){super();}@OverrideprotectedvoidfireMet

Java - 从一个方法返回多个对象类型的最佳方式

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion在我的DAO中,我有一个构建2个不同对象的方法,我想返回这两个对象,但我不确定最好的方法是什么。我看过使用?extendsmyObject,创建另一个包含我要返回的两个对象的类,并且只使用List.长话短说,为什么我需要这些类似的对象是在屏幕上显示1个,另一个与primefacesdataexporter一起使用,据我所知,它不处理对象中的列表。类人publicclassPerson(){