gpt4 book ai didi

java - 如何在java中复制类

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:38 25 4
gpt4 key购买 nike

我的项目由两个类组成:type 1和type 2就是各自有自己的函数和字段我将按如下方式使用它们:

private void initialize(String type) {
if (type == "Type1") {
x = new Type1;
} else if (type == "Type2") {
x = new Type2;
}
}

X 变量必须是什么类型?

<更新 1>=============================

我使用父类(super class)和接口(interface),但我无法访问 type1 或 type2 的变量和方法,只能访问父类(super class)的变量和方法

<更新 2>=============================

  public class Type1 extends SuperClass{
public int var = 1;
}

public class Type2 extends SuperClass{
public int var = 2;
}

private void initialize(String type) {
switch (type) {
case "Type1":
x = new Type1();
break;
case "Type2":
x = new Type2();
break;
}
}

void main(){
//int num = x.var;
}

在这种情况下不能用于转换:((Type1)x).var

最佳答案

使用一个将由两个类实现的接口(interface)

public interface Typeimplemntor{}
public class Type1 implements Typeimplemntor{}
public class Type2 implements Typeimplemntor{}

之后在你的函数中

 private void initialize(String type) {
Typeimplemntor typImp;
if (type == "Type1") {
typImp = new Type1();
} else if (type == "Type2") {
typImp = new Type2();
}
}

更新的完整示例

    public class Test {
public static void main (String argd[])
{
String type= "Type2";
Typeimplemntor typeimplemntor = null;
if (type.equals("Type1")) {
typeimplemntor = new Type1();
}else if (type.equals("Type2")) {
typeimplemntor = new Type2();
}

typeimplemntor.print();
if (typeimplemntor instanceof Type1) {
int y = ((Type1)typeimplemntor).x;
System.out.println(y);
((Type1)typeimplemntor).notInInterfaceType1();
}else if (typeimplemntor instanceof Type2){
int y = ((Type2)typeimplemntor).x;
System.out.println(y);
((Type2)typeimplemntor).notInInterfaceType2();
}


}
}

public class Type1 implements Typeimplemntor {
int x = 5;
public void print () {
System.out.println("Printed from Type1");
}
public void notInInterfaceType1 () {
System.out.println("Not in interface but in Type1");
}
}

public class Type2 implements Typeimplemntor {
int x = 15;
public void print () {
System.out.println("Printed from Type2");
}
public void notInInterfaceType2 () {
System.out.println("Not in interface but in Type2");
}
}

public interface Typeimplemntor {
void print();
}

如果你有将在两个类中使用的方法,你可以在接口(interface)中定义它们,并且可以根据它们在类中的实现直接访问它们。如果还有一些其他方法或变量,那么您必须检查实例,然后将其转换为相同的。

关于java - 如何在java中复制类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40146022/

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