[英]Pass a class as argument to another class Java
我在 package myApp 中使用用 POJO 编写的数据 class。 我有另一个 Package UtilLibrary,我已将其作为 jar 文件导入到 package myApp。
我通过硬编码数据类在 UtilLibrary 中开发了一种方法,现在我需要删除它,为此我正在寻找将数据 class 作为参数传递的解决方案。 下面是一个示例代码,非常感谢任何帮助。
import com.package.dataclasses.TestTable;
public class Sample {
public String putBatchRecords(DynamoDbEnhancedClient enhancedClient, Object tableObj) {
try {
DynamoDbTable<TestTable> objTableMappedClass = enhancedClient.table("Test_Table", TableSchema.fromBean(TestTable.class));
BatchWriteItemEnhancedRequest batchWriteItemEnhancedRequest = BatchWriteItemEnhancedRequest.builder()
.writeBatches(
WriteBatch.builder(TestTable.class)
.mappedTableResource(objTableMappedClass)
.addPutItem(builder -> builder.item((TestTable) tableObj))
.build()
)
.build();
enhancedClient.batchWriteItem(batchWriteItemEnhancedRequest);
}
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
System.exit(1);
}
return "Batch write successful";
}
}
在上面的代码中,我需要删除导入语句 - 因此将 TestTable 作为 object 传递给 putBatchRecords。 删除语句显示以下错误。
您可以这样更改您的代码:将 class 名称替换为完全限定的 class 名称。 然后你不需要导入那个 class。
public class Sample {
public String putBatchRecords(DynamoDbEnhancedClient enhancedClient, Object tableObj) {
try {
DynamoDbTable<com.package.dataclasses.TestTable> objTableMappedClass = enhancedClient.table("Test_Table", TableSchema.fromBean(com.package.dataclasses.TestTable.class));
BatchWriteItemEnhancedRequest batchWriteItemEnhancedRequest = BatchWriteItemEnhancedRequest.builder()
.writeBatches(
WriteBatch.builder(com.package.dataclasses.TestTable.class)
.mappedTableResource(objTableMappedClass)
.addPutItem(builder -> builder.item((com.package.dataclasses.TestTable) tableObj))
.build()
)
.build();
enhancedClient.batchWriteItem(batchWriteItemEnhancedRequest);
}
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
System.exit(1);
}
return "Batch write successful";
}
}
但不清楚为什么需要删除该导入。 它不会使您的代码在运行时表现不同,也不会使其更易于阅读。 因此,只有当您想消除与另一个TestTable
class 的名称冲突时,删除这样的导入才有意义。
我坚信您不想针对那个 class 名称进行硬编码。 使用公共基础 class 或接口代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.