有一个Java类,其中一个字段是一个方法?
我对Java相当陌生,因为我的文章的性质会透露出来 我需要创建一个包含一组方法的类,如果需要的话,程序员可以轻松地扩展这些方法。我考虑过有两个类:有一个Java类,其中一个字段是一个方法?,java,class,object,methods,field,Java,Class,Object,Methods,Field,我对Java相当陌生,因为我的文章的性质会透露出来 我需要创建一个包含一组方法的类,如果需要的话,程序员可以轻松地扩展这些方法。我考虑过有两个类:Commands和CommandCommands包含一个Command对象数组,程序员可以在其中添加新命令。命令类有两个字段。类的名称和方法签名。我不知道如何才能做到这一点。在C语言中,我认为可以有一个函数结构,那么我们可以有一个类,其中类的实例是方法吗?还是我完全走错了方向 我想尝试这样做: public class Commands { p
Commands
和Command
Commands
包含一个Command
对象数组,程序员可以在其中添加新命令。命令
类有两个字段。类的名称和方法签名。我不知道如何才能做到这一点。在C语言中,我认为可以有一个函数结构,那么我们可以有一个类,其中类的实例是方法吗?还是我完全走错了方向
我想尝试这样做:
public class Commands
{
private ArrayList<Command> commands;
/**
* Constructor for objects of class Command
*/
public Commands()
{
createCommands();
}
/**
* This is where a programmer can add new commands
*/
public void createCommands()
{
commands.add(new Command("move", public void move()));
}
/**
* This is where the programmer can define the move command
*/
public void move()
{
....
}
}
public class Command
{
private String command_name;
private Method command;
public Command(String command_name, Method command)
{
this.command_name = command_name;
this.command = command;
}
}
公共类命令
{
私有ArrayList命令;
/**
*类命令的对象的构造函数
*/
公共命令()
{
createCommands();
}
/**
*这是程序员可以添加新命令的地方
*/
公共void createCommands()
{
添加(新命令(“移动”,public void move());
}
/**
*这是程序员可以定义move命令的地方
*/
公开作废动议()
{
....
}
}
公共类命令
{
私有字符串命令名;
私有方法命令;
公共命令(字符串命令\名称、方法命令)
{
this.command\u name=command\u name;
this.command=命令;
}
}
我知道这有很多问题,但我一直在寻找正确的方法。提示/帮助将非常棒。我想您应该使用: 在面向对象编程中 命令模式是中的一种设计模式 使用哪个对象来表示 并封装所有信息 需要在以后调用一个方法 时间 维基百科页面有一个例子
您的
命令
应该是一个带有execute
方法的接口。程序员可以编写实现命令
接口的类,因此必须实现execute
方法来完成所需的工作。然后,您可以拥有一个Command[]
数组,对于每个Command
对象,您只需调用execute
即可执行任务。我想您应该使用以下命令:
在面向对象编程中
命令模式是中的一种设计模式
使用哪个对象来表示
并封装所有信息
需要在以后调用一个方法
时间
维基百科页面有一个例子
您的
命令
应该是一个带有execute
方法的接口。程序员可以编写实现命令
接口的类,因此必须实现execute
方法来完成所需的工作。然后,您可以拥有一个Command[]
数组,对于每个Command
对象,您只需调用execute
即可执行任务。Java没有函数指针,因此这不起作用。您可能想做的是使用一个带有execute()
方法的命令接口,该方法在具体的子类中实现
这是风格的问题,但我通常不会在命令实现中使用名称字段。相反,我只需要创建一个包含每个命令名称的
映射。Java没有函数指针,因此这不起作用。您可能想做的是使用一个带有execute()
方法的命令接口,该方法在具体的子类中实现
这是风格的问题,但我通常不会在命令实现中使用名称字段。相反,我只需要创建一个包含每个命令名称的Map
。注意,在Java中不能直接传递方法。相反,它们需要是实现公共接口的对象。例如,您的方法可以成为实现可运行接口的对象。然后,当需要使用该方法时,只需调用“run”。注意,在Java中不能直接传递方法。相反,它们需要是实现公共接口的对象。例如,您的方法可以成为实现可运行接口的对象。然后,当需要使用该方法时,只需调用“run”。Java没有函数指针。这是一个常见的技巧:
abstract class (or interface) Command {
void execute();
}
public void createCommands() {
commands.add(new Command(){
@Override
void execute() {
something.move();
}
});
}
Java没有函数指针。这是一个常见的技巧:
abstract class (or interface) Command {
void execute();
}
public void createCommands() {
commands.add(new Command(){
@Override
void execute() {
something.move();
}
});
}
您试图通过此操作实现的总体目标是什么?将有许多命令,用户可以通过键入“executename\u of_command”来执行它们。这些命令将在commands类中定义。您试图通过这些命令实现的总体目标是什么?将有许多命令,用户可以通过键入“execute name_of_command”来执行它们。这些命令将在commands类中定义,非常感谢。这是一个很大的帮助,我认为这是有效的。现在唯一需要做的是,我需要能够命名这些命令,以便用户可以通过键入“executename\u of_command”来执行它们。我正在尝试使用HashMap来存储名称和命令。我来看看我怎么说不客气!使用Map
将用户友好的命令名称与相应的Command
对象关联起来是一个好主意。非常感谢。这是一个很大的帮助,我认为这是有效的。现在唯一需要做的是,我需要能够命名这些命令,以便用户可以通过键入“executename\u of_command”来执行它们。我正在尝试使用HashMap来存储名称和命令。我来看看我怎么说不客气!使用映射
将用户友好的命令名称与相应的命令
对象关联是一个好主意。编辑:按照您的建议使用映射时,我遇到了一个问题,但我想我现在可以正常工作了。谢谢编辑:按照你的建议使用地图时,我遇到了一个问题,但我想我会