MisterChangRay / magic-byte

a java tool for faster convertor byte2object
BSD 3-Clause "New" or "Revised" License
49 stars 20 forks source link

MResult 的 build 方法应该做泛型检查 #74

Open FULaBUla opened 1 week ago

FULaBUla commented 1 week ago

如果不改成以下样式,会出现提示未经检查的泛型转换。

    public static <T> MResult<T> build(Integer bytes, T data) {
        MResult<T> result = new MResult<>();
        result.bytes = bytes;
        result.data = data;
        return result;
    }

    public static <T> MResult<T> build( T data) {
        MResult<T> result = new MResult<>();
        result.data = data;
        return result;
    }

然后改过之后发现单元测试中返回的结果就没有按照声明的泛型返回,但是未经检查。这个处理是否合理?

public class CustomBookConverter implements MConverter<Book> {
    @Override
    public MResult<Book> pack(int nextReadIndex, byte[] fullBytes, String[] attachParams, Class clz, Object obj, Object root) {
        if(attachParams[0].equals("1")) {
            Book book = new Book();
            book.setCreateDate(new Date());
            book.setId(23);
            return MResult.build(0, book);

        }  else if(attachParams[0].equals("2")) {
            Book book2 = new Book();
            book2.setCreateDate(new Date());
            book2.setId(24);
            return MResult.build(0,book2);
        }else if(attachParams[0].equals("3")) {
            Book2 book2 = new Book2();
            book2.setCreateDate(new Date());
            book2.setId(25);
            return MResult.build(0,book2);
        }else if(attachParams[0].equals("4")) {
            Book2 book2 = new Book2();
            book2.setCreateDate(new Date());
            book2.setId(26);
            return MResult.build(0,book2);
        } else if(attachParams[0].equals("14")) {
            Book2 book2 = new Book2();
            book2.setCreateDate(new Date());
            book2.setId(26);
            return MResult.build(8,book2);
        }
        return MResult.build(0, null);
    }

    @Override
    public byte[] unpack(Book object, String[] attachParams, Object rootObj) {
        if(attachParams[0].equals("14")) {

            return new byte[] {
                    0, 0, 0 ,1,
                    0, 0, 0 ,5
            };
        }
        return new byte[0];
    }
}
MisterChangRay commented 1 week ago

是的,需要更正