gpt4 book ai didi

java - 具有 2 种不同类型的对象数据

转载 作者:行者123 更新时间:2023-12-01 17:07:53 26 4
gpt4 key购买 nike

我有以下内容:

public class Notifier{
CustomPlayer mCustomPlayer;
CurrentPlayer mCurrentPlayer;
}

public class MainActivity extends Activity{

public void onCreate(){
Notifier ntf = new Notifier();
if( index == 0){
ntf.mCustomPlayer = new CustomPlayer(this);
}
else{
ntf.mCustomPlayer = new CurrentPlayer(this); // having problem here
}
}
}

在Notifier类中,我只想有一个对象mCustomPlayer在MainActivity类中的CustomPlayer和CurrentPlayer之间切换。

我尝试在 Notifier 类中添加以下内容,

public class Notifier{
CustomPlayer mCustomPlayer;
CurrentPlayer mCurrentPlayer;

public Object getType(int index) {
if (index == 1) {
return CurrentPlayer.class;
}
else {
return CustomPlayer.class;
}
}
}

因此,我在尝试在 MainActivity 类中初始化 mCustomPlayer 时遇到问题。

ntf.mCustomPlayer = new (ntf.mCustomPlayer)getType(0); // compile error

有没有办法实现这一点?
我已经一天没有尝试配置正确的实现了。
在这种情况下我应该使用接口(interface)吗?

最佳答案

要使用 new 关键字,您必须提供一个类(即 new MyClass())。

可以为此使用反射...但是为CustomPlayer拥有一个通用的父类(super class)(或接口(interface))不是更简单吗?当前玩家

例如,假设 CustomPlayerCurrentPlayer 都有 playOne()playTwo() 方法。然后您可以定义:

public interface Player {
void playOne();
void playTwo();
}

public class CurrentPlayer implements Player {
@Override
public void playOne() {
// code
}

@Override
public void playTwo() {
// code
}
}

private class CustomPlayer implements Player {
@Override
public void playOne() {
// code
}

@Override
public void playTwo() {
// code
}
}

public class Notifier {
Player mPlayer;
}

然后用new CurrentPlayer()或new CustomPlayer()分配mPlayer,然后就可以调用界面上的任何方法了。

关于java - 具有 2 种不同类型的对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24567941/

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