草庐IT

java - Gson 和抽象父类(super class) : deserialization issue

假设有一个抽象类,比如A,和两个非抽象子类,比如A1和A2。我想通过使用GSONlibrary从json格式“反序列化”它们.例如我得到一组A对象。intn=...;A[]list=newA[n];A[0]=newA1(....);A[1]=newA2(....);...有人将其转换为JSON字符串,如下所示:Stringjson=(newGson()).toJson(list);最后,如果我尝试反序列化如下A[]deserializedList=(newGson()).fromJson(json,A[].class);然后我得到了一个错误,因为GSON默认反序列化器找到了一个抽象类(

java - 在java中,我们可以通过传递父类(super class)方法中使用的参数的子类来覆盖方法吗?

按照规则,在重写子类中的方法时,参数不能更改并且必须与父类(superclass)中的相同。如果我们在重写方法时传递参数的子类怎么办?它会被称为重载或覆盖吗?根据我的查询,我在下面编写了一些代码。我期待输出为“狗吃肉食”,但令我惊讶的是输出是“动物吃肉食”如果有人可以解释当分配的对象是Dog类型时如何调用Animal方法,将不胜感激?classFood{publicStringtoString(){return"NormalFood";}}classFleshextendsFood{publicStringtoString(){return"FleshFood";}}classAnim

java - 在 Java 中,为什么我不能在父类中声明一个最终成员(不初始化它)并在子类中设置它的值?我该如何解决?

在Java程序中,我有多个子类继承自父类(抽象类)。我想表达每个child都应该有一个只设置一次的成员(我打算从构造函数中这样做)。我的计划是编写s.th.像这样:publicabstractclassParent{protectedfinalStringbirthmark;}publicclassChildextendsParent{publicChild(Strings){this.birthmark=s;}}然而,这似乎并不讨Java大神们的欢心。在父类中,我收到birthmark“可能尚未初始化”的消息,在子类中我收到“无法访问最终字段birthmark”的消息。那么Java的

java,从父类(super class)初始化子类

publicclassBase{//longlistofattributes//noConstructorusingfields//noinitmethode//icannotchangethisclass}现在我像这样扩展基类:publicclasssubClassextendsBase{privatebooleanselected;...getterundsetter...}我成为基础对象的列表List但我需要相同的列表,但作为List有没有办法从基类初始化子类?例子:for(Baseb:list){SubClasssub=(SubClass)b;//Thatswrongiknow

java - 为什么不从父类(super class)继承 OSGi 声明性服务 (DS) 注释?

OSGiDeclarativeServices(DS)规范定义了注释,这些注释可以由Bnd等工具处理到运行时使用的组件描述xml中。R6规范中的112.8.1说:组件注解不是继承的,它们只能用在给定的类上,不考虑其父类(superclass)层次结构或接口(interface)上的注解。为什么指定不允许继承? 最佳答案 ApacheFelix项目提供的DS注解曾经支持DS的扩展性。基于此实现,我们尝试将其标准化为指定官方OSGiDS注释的工作的一部分。但是,问题是我们在跨包边界的两个实现类之间遇到了讨厌的耦合问题,我们无法使用Imp

Java多态性如何为子类对象调用父类(super class)方法

这是我想问的一个例子父类(superclass)Name.javapublicclassName{protectedStringfirst;protectedStringlast;publicName(StringfirstName,StringlastName){this.first=firstName;this.last=lastName;}publicStringinitials(){StringtheInitials=first.substring(0,1)+"."+last.substring(0,1)+".";returntheInitials;}然后子类是ThreeNam

java - 序列化会保存父类(super class)字段吗?

这个问题在这里已经有了答案:JavaobjectSerializationandinheritance(3个答案)关闭9年前。我的子类实现了Serializable,但我的父类(superclass)没有。子类和父类(superclass)都包含需要作为子类状态的一部分保存的变量。序列化会保存父类(superclass)字段吗?

java - 如何验证父类的 super.method() 的调用?

我有三个非常简单的类。其中之一扩展了父类。publicclassParent{protectedStringprint(){//somecode}}这是一个子类。publicclassChildextendsParent{/***Shouldn'tinvokeprotectedParent.print()ofparentclass.*/@OverrideprotectedStringprint(){//someadditionalbehaviorreturnsuper.print();}}和测试类。publicclassChildTest{@Testpublicvoidshould_m

java - 在子类中使用 super 关键字访问父类(super class)私有(private)字段

对于编码项目,我有一个包含嵌套类的类。嵌套类是同一个外部类的子类。目的是让外部类包含嵌套类的一些实例,它可以将这些实例传递给外部类的其他实例。嵌套子类允许外部类修改内容,而其父类(superclass)允许读取内容和调用一些方法。父类(superclass)对象因此被传递给其他对象,以链接链中的外部类对象。我的问题与访问修饰符有关。这是一个极简代码示例:abstractclassOuterClass{protectedclassNestedSuperClass{privateTdata;publicNestedSuperClass(Tt){this.data=t;}publicTget

java - 无法从不同 jar 中的同一包访问父类(super class)的 protected 成员

我遇到了一个奇怪的问题,我无法弄清楚在尝试插件化我的程序时弹出的问题。另一个问题是我无法创建一个简单的测试用例,因为每次我尝试它都会成功。一定有一些我遗漏的并发症。但我会尽可能清楚地描述情况,以免任何人听起来很熟悉。我有一个名为Seed的基类,它是主应用程序的一部分,由系统类加载器加载。我有一个插件,其中包含一个Road类,它是Seed的一个子类。它在运行时从一个单独的jar文件加载。类Road引用了字段Seed.garden,其定义为:protected最后花园;请注意,我没有收到编译错误。当插件jar包含在系统类路径中时,我也不会收到运行时错误。只有当我的主应用程序使用新的类加载器