Java 从子类返回值
我希望能够以支持更多类的动态方式调用Java 从子类返回值,java,Java,我希望能够以支持更多类的动态方式调用ObjectAction#firstClick。我的目标不是直接访问测试类并从那里调用它 请记住,您不能使用静态上下文 public abstract class ObjectAction implements AchievementListener { public abstract void firstClick(GameObject object); } firstClick是我想动态调用的 下面是更多的代码 public interfac
ObjectAction#firstClick
。我的目标不是直接访问测试类并从那里调用它
请记住,您不能使用静态上下文
public abstract class ObjectAction implements AchievementListener {
public abstract void firstClick(GameObject object);
}
firstClick
是我想动态调用的
下面是更多的代码
public interface AchievementListener {
}
它充当具有子类的侦听器类型,如ObjectAction
、ItemAction
、GroundAction
等
这是枚举
public enum Achievements {
TEST(new ObjectAction() {
@Override
public void firstClick(Object object) {
}
});
private static final Set<Achievements> ACHIEVEMENTS = Collections.unmodifiableSet(
EnumSet.allOf(Achievements.class));
public static Optional<AchievementListener> getListener() {
return ACHIEVEMENTS.stream().filter(a -> a.listener).findAny();
}
AchievementListener listener;
Achievements(AchievementListener listener) {
this.listener = listener;
}
}
公共枚举成就{
测试(新的ObjectAction(){
@凌驾
公共void firstClick(对象){
}
});
私有静态最终设置成就=Collections.unmodifiableSet(
EnumSet.allOf(acgregations.class));
公共静态可选getListener(){
返回成就.stream().filter(a->a.listener.findAny();
}
成就监听器监听器;
成就(成就监听器监听器){
this.listener=listener;
}
}
#getListener()函数是我需要帮助的部分,它不起作用,因为它不返回AchieventListener,我要找的是类似getListener().getObjectActions().firstClick(GameObject对象)的东西;对于类似ItemActions的内容,它应该是getListener().getItemActions().executeAction(Item) 您已经创建了一个不声明任何方法的接口。然后在一个抽象类中实现该接口,该抽象类只声明一个抽象方法;因此,您不需要该抽象类,因为您没有使用必要的构造函数执行任何操作 您需要做的是像这样声明接口:
public interface AchievementListener {
public void firstClick(GameObject object); // Declared the interface method
}
您现在可以离开抽象类,因为它没有用处,直接请求AchievementListener
:
public class Test extends Achievement {
@Override
public AchievementListener process (Player player) {
return new AchievementListener () {
@Override
public void firstClick(GameObject object) {
System.out.println("This works for sure ;)");
}
};
}
}
简而言之,动态在接口中,因为您希望在所有子类中都有一个方法 我不是这么问的,伙计。。现在,如果我有一个名为firstClick(GroundObject)的GroundAction类,该怎么办????我们将如何执行firstClick。。我们怎么称呼它。。AchievementListener.firstClick(对象);我不喜欢那种态度,我只是想在自己的空闲时间帮助你。我将再试一次,但我认为您需要在什么用例中显示您需要它,因为我可以随意进入泛型而不需要帮助您。请更清楚地解释,并实际展示用例。对不起,伙计,我不是那个意思,但人们一直在回答我从未要求过的事情,然后我再次道歉。。。我需要一种调用firstClick(GameObject)的方法;我添加了一个例子@main post。