FasterXML / FasterXML/java-classmate

Correct approach to compare `ResolvedType` with a raw `Class<?>`?

Đang mở
#72 3 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
266
Fork
47
Merge trung bình
1 giờ 42 phút
Pull request đã merge (30 ngày)
1

Mô tả

What's the appropriate way to see if a `ResolvedType` represents a simple class that I know about?

Let's say I pass a `new GenericType{}` to a method, and I just want to see if the generic parameter is `String`. I think (I haven't tried it yet) I would do this (code not optimized, for illustration):

```java
void foo(GenericType genericType) {
TypeResolver typeResolver = new TypeResolver();
ResolvedType resolvedType = typeResolver.resolve(genericType);
```

How would I then see if `resolvedType` indicates a simple `String`? I'm guessing I could do this:

```java
if(resolvedType.getTypeParameters.isEmpty() && resolvedType.getErasedType().equals(String.class)) {

```

But that seems sort of awkward. Is there a better way?

(Note that the `resolvedType.getTypeParameters.isEmpty()` check is arguably not necessary here, as `String` has no generic parameters, but I'm looking for a general approach.)

Or should I be going in the other direction, resolving `String.class` and then comparing the resolved types?

```java
if(resolvedType.equals(typeResolver.resolve(String.class))) {

```

I don't know how much overhead the extra resolution of `String.class` adds, though.

This may be related to #31.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.