gpt4 book ai didi

Java:如何通过调用父类来获取子类的对象

转载 作者:行者123 更新时间:2023-11-29 12:37:30 24 4
gpt4 key购买 nike

import java.util.*;
import java.lang.*;
import java.io.*;

class mainA {
private mainA obj;

public mainA(int type) {
System.out.println("accessing mainA");
switch(type) {
case 1:
obj = new mysql();
break;

case 2:
obj = new mssql();
break;

default:
break;
}
}
}

class mysql extends mainA {
public void printme() {
System.out.println("accessing mysql");
}
}

class mssql extends mainA {
public void printme() {
System.out.println("accessing mssql");
}
}

class C2 extends mainA {

public C2() {
super();
}
public static void main(String args[]){
Object b = new C2();
b.printme();
}
}

我需要实现以下场景。如果有人能帮助我,那就太好了。我正在尝试创建一个通用 API 库集,它可以扩展到尽可能多的后端数据库。

这个想法是创建一个 C2 对象,该对象又会根据 dbtype 返回 mysql/mssql 的值。类型参数可以从代码中的任何位置获取。 mainA 是由配置参数组成的父类(super class)。类型也可以在这里获取。这里的问题是我无法从 C2 获取 mysql/mssql 的对象。理想的情况是创建一个 C2 对象,该对象引用 mainA 来获取类型并初始化 mssql/mysql。 C2.printme必须调用类型中指定的db类。

泛型类在这里有什么帮助吗?

最佳答案

您可以使用 instanceof 测试来转换对象,但它很蹩脚,因为如果您要添加新类型的数据库对象,则必须更改代码。

你可以有一个好的接口(interface),并让子类实现它,这样你就可以通过你的接口(interface)进行调用,而不用关心实际的实现对象。

Coding to Interface is what you should be doing.

关于Java:如何通过调用父类来获取子类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26553552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com