java—使用poiji库创建一个通用方法来加载cucumber中的数据集

ylamdve6  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(485)

我有一个从场景步骤加载数据的类我的第一个类是loaduserstepdfn

public class LoadUserStepDfn extends LoadDataStepDfn<User> {

public LoadUserStepDfn(ReadingUserUsingPoiji readingUserUsingPoiji) {
    super.readingExcelUsingPoiji = readingUserUsingPoiji;
}

@Given("^Data is loaded from \"([^\"]*)\"$")
public void data_is_loaded_from (String filePath) throws Throwable {
    super.data_is_loaded_from(filePath);
}

它调用名为loaddatastepdfn的类

public class LoadDataStepDfn<T> {

public List<T> data;

protected ReadingExcelUsingPoiji readingExcelUsingPoiji;

public void data_is_loaded_from (String filePath) throws Throwable {
    data = readingExcelUsingPoiji.TransformExcelToClass(filePath);

}

这是我的类,它读取excel并将其存储到java类

public abstract class ReadingExcelUsingPoiji<T> {

public List<T> TransformExcelToClass(String filePath){
    PoijiOptions options = PoijiOptions.PoijiOptionsBuilder.settings().addListDelimiter(";").build();
    List<T> data = Poiji.fromExcel(new File(filePath), getMyType(), options);
    return data;
}

public abstract Class<T> getMyType();

}
问题是我想使用一个类,我不想它是抽象的,而使用另一个类,即这个类

public class ReadingUserUsingPoiji extends ReadingExcelUsingPoiji<User> {

public Class<User> getMyType(){
    return User.class;
}
igetnqfo

igetnqfo1#

我试图理解这里,所以你不想要@override,而是一个方法,它返回你要转换到的类的类型??
为什么不能这么简单。。。你有一个方法来决定你应该用什么类来转换到。。。
我不明白你为什么要用泛型…你的逻辑似乎并不关心它?尤其是如果你有一个阅读能力很强的POIJI课程…它真的不应该在意。

public class ReadingExcelUsingPoiji<T> {

public List<T> transformExcelToClass(String filePath, Class<T> classToTransformTo) {
    PoijiOptions options = PoijiOptions.PoijiOptionsBuilder.settings().addListDelimiter(";").build();
    List<T> data = Poiji.fromExcel(new File(filePath), classToTransformTo, options);
    return data;
}

public static void main(String [] args) {

    ReadingExcelUsingPoiji genericConverter = new ReadingExcelUsingPoiji();

    List<User> listOfUsers = genericConverter.transformExcelToClass("yourFilePath", User.class);
    List<Car> listOfCars = genericConverter.transformExcelToClass("yourFilePath", Car.class);
}

}

public class LoadUserStepDfn extends LoadDataStepDfn<User> {

    @Given("^Data is loaded from \"([^\"]*)\"$")
    public void data_is_loaded_from (String filePath) throws Throwable {
        super.data_is_loaded_from(filePath , User.class);
    }

}

public class LoadDataStepDfn<T> {

    public List<T> data;

    protected ReadingExcelUsingPoiji readingExcelUsingPoiji;

    protected void data_is_loaded_from(String filePath, Class<T> classToTransformTo) throws Throwable {
        data = readingExcelUsingPoiji.transformExcelToClass(filePath, classToTransformTo);

    }

}

相关问题