java 输入类名获取父类名

java 输入类名获取父类名,第1张

java中是可以多继承的,所以子类获得父类的类名,可以使用getSuperClass()这个方法来获得,示例如下:

public class Test1 extends Date {

public static void main(String[] args) {

new Test1()test();//测试获得父类类名方法

}

public void test() {

Systemoutprintln(Test1classgetSuperclass()getName());//打印父类类名,使用getSuperclass()方法

}

}

JAXB中的继承问题

问题

JAXB是我用过的java处理XML的方法中做方便的一个,在jaxb中如何使用类的集成关系有一个小小的需要注意的地方。看下面的两端XML。

XML

示例1:

<a>

<b></b>

<c></c>

<a>

XML示例2:

<a>

<b></b>

<d></d>

<a>

这两段XML的唯一差别就在c元素与d元素。为了生成这两个XML,有几种方案

方案一

不利用类的继承来重用代码,写两套Java代码, 如:

@XmlRootElement(name = a)

public class A

{

B b;

C c:

}

@XmlRootElement(name = a)

public class A2

{

B b;

D d:

}

public class B {}

public class D {}

这一方案不是我们想要的,虽然可以解决问题,但是不能重用两个XML中共有的结构。

方案二

利用一个父类表示两个XML之间的共同的结构,用两个子类扩展这个父类,分别添加 C 和 D

元素。

代码如下:

@XmlRootElement(name = "a")

public class A {

B

b;

}

public class B {}

public class C {}

public class D

{}

public class E extends A {

C c;

}

public class F

extends A {

D d;

}

这一方案看似很直观,但是实践中却发现 E 和 F 却都只能生成 父类的

部分,如下的XML:

<a>

<b></b>

<a>

即使把 @XmlRootElement(name = “a”) 移到 E 和 F类上也行不通。

方案三

用一个类代表共同的结构,用一个父类代表C和D元素,在用两个类代表具体化的C和D类,如:

@XmlRootEelemnt(name =

"a")

public class A {

B b;

@XmlElements({

@XmlElement(name =

"c", type=Cclass),

@XmlElement(name = "d", type=Dclass)

})

E

e;

}

public class B {}

public class E {}

public class C extends

E {}

public class D extends E {}

这样做才最终达到目的。关键点就是@XmlElements的使用。

say这个方法是定义在父类Dog中的,所以他直接调用了父类的name,输出“小刘”。

如果把say这个方法复制一下放到HomeDog中,那它会调用HomeDog的name,输出“小明”。

直接用son对象是不能给父类赋值的哦。你可以再Son类中添加一个方法:

public void setFatherA(String a)

{

  supersetA(a);

 }

然后就可以通过sonsetFatherA("a");来给父类a赋值。

以上就是关于java 输入类名获取父类名全部的内容,包括:java 输入类名获取父类名、继承类怎么用jaxb解析获取父类的属性、关于java 继承类 子类调用父类方法访问属性问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9380947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存