Java 定义在映射中接受参数的方法
我有一个用例,我在一个cloudformation堆栈中创建多个AWS资源,例如S3存储桶、SNS主题等。所有这些都是简单的资源,即S3存储桶中没有任何对象 我已经设置了一个工作流,在这里我的代码将选择一个随机资源类型,然后创建资源。现在,我正在尝试构建一个通用类/方法,该类/方法将删除这些创建的资源 我将资源存储为json字段,这些字段提供有关resourceType的详细信息Java 定义在映射中接受参数的方法,java,amazon-web-services,Java,Amazon Web Services,我有一个用例,我在一个cloudformation堆栈中创建多个AWS资源,例如S3存储桶、SNS主题等。所有这些都是简单的资源,即S3存储桶中没有任何对象 我已经设置了一个工作流,在这里我的代码将选择一个随机资源类型,然后创建资源。现在,我正在尝试构建一个通用类/方法,该类/方法将删除这些创建的资源 我将资源存储为json字段,这些字段提供有关resourceType的详细信息 { "AWSService": "S3", "AWSResourceType": "Bucket", "
{
"AWSService": "S3",
"AWSResourceType": "Bucket",
"ResourceAttributes" : {
"BucketName": "MyBucket"
}
}
对于清理,我认为我有一个映射,其中key作为AWSService,值为runnable,它将调用适当的serviceType来删除资源
但是,runnables不能接受参数,因此我不能传入要删除的resourceName/Arn,以便API知道要删除的资源
是否有一种方法可以将此信息存储为映射,并且仍然将参数传递给正在执行的方法 在没有看到一些代码的情况下,我不确定自己是否完全理解了您所做工作的所有含义,但我认为这可能会让您朝着正确的方向前进 您可以在新的泛型类中实现Runnable接口: 因此,您可以创建一个实现runnable接口的泛型类,该类要么有一个可以接受所需变量的构造函数,要么有getter/setter,等等 大致如下:
public class ResourceCleanup implements Runnable {
private String arn;
@Override
public void run() {
// do the cleanup with the arn
}
public ResourceCleanup(String arn) {
this.arn = arn;
}
// etc.
}
或者您可以传入映射而不是字符串,根据需要使用Java泛型等。希望这有帮助 在没有看到一些代码的情况下,我不确定自己是否完全理解了您所做工作的所有含义,但我认为这可能会让您朝着正确的方向前进 您可以在新的泛型类中实现Runnable接口: 因此,您可以创建一个实现runnable接口的泛型类,该类要么有一个可以接受所需变量的构造函数,要么有getter/setter,等等 大致如下:
public class ResourceCleanup implements Runnable {
private String arn;
@Override
public void run() {
// do the cleanup with the arn
}
public ResourceCleanup(String arn) {
this.arn = arn;
}
// etc.
}
或者您可以传入映射而不是字符串,根据需要使用Java泛型等。希望这有帮助