如何確定物體和請求是否是同一型別的 clazz 類(示例:if(entity.equals(clazz) && request.equals(clazz))但不起作用。(在這種情況下,我分配ContattoCliente.class給clazzif is true( if (clazz == ContattoCliente.class))
語言 Java 版本 11。
private Object convertMapMergedToEntity(Object entity, Object request, Class<?> clazz) {
List<Object> resultList = new ArrayList<>();
Object clienteMerged = new Object();
ObjectMapper mapper = JsonMapper.builder().addModule(new JavaTimeModule()).build();
if (clazz == ContattoCliente.class) {
for (int i = 0; i < ((List<Object>) request).size(); i ) {
Object contattoMerged = new Object();
LinkedHashMap<Object, Object> entityMap = mapper.convertValue(((List<Object>) entity).get(i),
LinkedHashMap.class);
LinkedHashMap<Object, Object> requestMap = mapper.convertValue(((List<Object>) request).get(i),
LinkedHashMap.class);
contattoMerged = mapDifferenceMerged2(entityMap, requestMap, clazz);
resultList.add(contattoMerged);
}
return resultList;
} else if (clazz == Cliente.class) {
LinkedHashMap<Object, Object> entityMap = mapper.convertValue(entity, LinkedHashMap.class);
LinkedHashMap<Object, Object> requestMap = mapper.convertValue(request, LinkedHashMap.class);
clienteMerged = mapDifferenceMerged2(entityMap, requestMap, clazz);
}
return clienteMerged;
}
The problem is that if i compare them with Getclass () the condition will always be false, I have also tried everything that is after Dot Getclass ()
System.out.println("entity ->" entity.getClass());
System.out.println("request -> " request.getClass());
System.out.println("clazz ->" clazz.getSimpleName());
Output:
entity -> class org.hibernate.collection.internal.PersistentBag
request -> class java.util.LinkedList
clazz -> ContattoCliente
uj5u.com熱心網友回復:
我不確定這是否是您所期望的,但是如果您要檢查是否與 兼容entity,request您可以使用,也就是說.clazzClass.isInstance(Object)clazz.isInstance(entity) && clazz.isInstance(request)
uj5u.com熱心網友回復:
我認為您正在尋找的方法是isAssignableFrom. 此方法檢查一個類是否等于另一個類,或者是另一個類的子類。
所以你的代碼應該是這樣的
if (ContattoCliente.class.isAssignableFrom(clazz)) {
uj5u.com熱心網友回復:
我知道您需要檢查是否entity和request是同一類的實體,并且您添加了第三個引數clazz,因為您之前嘗試檢查“型別相等性”失敗了。
那這個呢:
if( nonNull( entity ) && nonNull( request ) && entity.getClass().equals( request.getClass() ) )
{
…
}
如果引數的類必須是 指定??的類clazz,請考慮以下構造:
private <T> Object convertMapMergedToEntity( T entity, T request, Class<T> clazz)
{
…
}
這里強制編譯器entity屬于引數指定request的型別;它不再需要運行時檢查。Tclazz
如果您想通過任何方式進行運行時檢查,請嘗試此操作(但null至少添加檢查entityand request):
if( entity.getClass().equals( request.getClass() && entity.getClass().equals( clazz ) ) )
{
…
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510464.html
標籤:爪哇班级仿制药
上一篇:我應該如何使用一個受我的特征系結的通用引數為我的結構實作From/Into?
下一篇:乘以常數的通用函式
