将类作为参数传递给另一个类Java

twh00eeo  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(222)

我在包myApp中使用了一个用POJO编写的数据类。我有另一个包UtilLibrary,我已经将其作为jar文件导入到包myApp中。
我已经开发了一个方法在UtilLibrary硬编码的数据类现在我需要删除相同的,我正在寻找解决方案来传递数据类作为参数.下面是一个示例代码,任何帮助都是非常感谢.

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";
    }
}

在上面的代码中,我需要删除import语句-因此将TestTable作为对象传递给putBatchRecords。删除语句会显示以下错误。

xuo3flqw

xuo3flqw1#

您可以按如下方式更改代码:将类名替换为完全限定类名。这样就不需要导入该类。

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类的名称冲突时才有意义。
我坚信你不想硬编码一个类名。使用一个公共基类,或者一个接口代替。

相关问题