精华内容
下载资源
问答
  • 参数化类型 public interface ParameterizedType extends Type { ... Type getRawType(); Type getOwnerType(); } 何为参数化类型 列举一个实体类用代码来解释什么是参数化类型 public class Parameteriz...

    参数化类型

    public interface ParameterizedType extends Type {
        Type[] getActualTypeArguments();
    
        Type getRawType();
    
        Type getOwnerType();
    }
    

    何为参数化类型
    列举一个实体类用代码来解释什么是参数化类型

    public class ParameterizedBean {
        List<String> list1;
        List list2;
        Map<String,Long> map1;
        Map map2;
        Map.Entry<Long,Short> map3;
    }
    

    测试代码

    Field[] fields = ParameterizedBean.class.getDeclaredFields();
    for(Field f:fields){
        //是否是ParameterizedType
        System.out.print(f.getName()+":"+(f.getGenericType() instanceof ParameterizedType));
    }
    

    打印结果

    list1:true
    list2:false
    map1:true
    map2:false
    map3:true
    

    从打印结果看来,具有<>符号的变量是参数化类型

    Type[] getActualTypeArguments()
    

    该方法返回一个Type数组
    测试代码

    Field[] fields = ParameterizedBean.class.getDeclaredFields();
    for(Field f:fields){
        if(f.getGenericType() instanceof ParameterizedType){
            ParameterizedType pType =(ParameterizedType) f.getGenericType();
    System.out.print("变量:"+pType.getTypeName()+"     ");
                  Type[] types =pType.getActualTypeArguments();
                  for(Type t:types){
    System.out.print("类型:"+t.getTypeName());
                  }
    }
    

    先把实体类放下来,免得往上翻

    public class ParameterizedBean {
        List<String> list1;
        List list2;
        Map<String,Long> map1;
        Map map2;
        Map.Entry<Long,Short> map3;
    }
    

    打印结果

    变量:list1     类型:java.lang.String
    变量:map1     类型:java.lang.String类型:java.lang.Long
    变量:map3     类型:java.lang.Long类型:java.lang.Short   
    

    从打印结果返回来看,getActualTypeArguments()返回了一个Type数组,数组里是参数化类型的参数

    参考:ParameterizedType详解
    Java反射-基于ParameterizedType实现泛型类类型参数化

    展开全文
  • JS - 获取数据类型

    2021-01-27 15:26:05
    function getRawType(value) { return Object.prototype.toString.call(value).slice(8, -1) } let val='aaa'; var res = getRawType(val); console.log((res))//String
    function getRawType(value) {
        return Object.prototype.toString.call(value).slice(8, -1)
    }
    let val='aaa';
    var res = getRawType(val);
    console.log((res))//String
    
    展开全文
  • ParameterizedType详解

    万次阅读 多人点赞 2018-07-19 15:24:02
    ParameterizedType详解 参数化类型 public interface ParameterizedType extends Type { ... Type getRawType(); Type getOwnerType(); } 何为参数化类型 列举一个实体类用代码来解释什么...

    ParameterizedType详解

    参数化类型

    public interface ParameterizedType extends Type {
        Type[] getActualTypeArguments();
    
        Type getRawType();
    
        Type getOwnerType();
    }

    何为参数化类型

    列举一个实体类用代码来解释什么是参数化类型

    public class ParameterizedBean {
        List<String> list1;
        List list2;
        Map<String,Long> map1;
        Map map2;
        Map.Entry<Long,Short> map3;
    }

    测试代码

    Field[] fields = ParameterizedBean.class.getDeclaredFields();
    for(Field f:fields){
        //是否是ParameterizedType
        System.out.print(f.getName()+":"+(f.getGenericType() instanceof ParameterizedType));
    }

    打印结果

    list1:true
    
    list2:false
    
    map1:true
    
    map2:false
    
    map3:true
    

    从打印结果看来,具有<>符号的变量是参数化类型

    Type[] getActualTypeArguments()

    该方法返回一个Type数组

    测试代码

    Field[] fields = ParameterizedBean.class.getDeclaredFields();
    for(Field f:fields){
        if(f.getGenericType() instanceof ParameterizedType){
            ParameterizedType pType =(ParameterizedType) f.getGenericType();
    System.out.print("变量:"+pType.getTypeName()+"     ");
                  Type[] types =pType.getActualTypeArguments();
                  for(Type t:types){
    System.out.print("类型:"+t.getTypeName());
                  }
    }

    先把实体类放下来,免得往上翻

    public class ParameterizedBean {
        List<String> list1;
        List list2;
        Map<String,Long> map1;
        Map map2;
        Map.Entry<Long,Short> map3;
    }
    

    打印结果

    变量:list1     类型:java.lang.String
    变量:map1     类型:java.lang.String类型:java.lang.Long
    变量:map3     类型:java.lang.Long类型:java.lang.Short   

    从打印结果返回来看,getActualTypeArguments()返回了一个Type数组,数组里是参数化类型的参数

    Type getRawType()

    获取变量的类型

    还是用代码最有说服力

    测试代码

    Field[] fields =  ParameterizedBean.class.getDeclaredFields();
        for(Field f:fields){
        if(f.getGenericType() instanceof ParameterizedType){
            ParameterizedType pType = (ParameterizedType) f.getGenericType();
    System.out.print("变量:"+f.getName());
    System.out.print("RawType:"+pType.getRawType().getTypeName();
        }
    }

    先放实体类

    public class ParameterizedBean {
        List<String> list1;
        List list2;
        Map<String,Long> map1;
        Map map2;
        Map.Entry<Long,Short> map3;
    }

    打印结果

    变量:list1     RawType:java.util.List
    
    变量:map1     RawType:java.util.Map
    
    变量:map3     RawType:java.util.Map$Entry

    从打印结果来看,其实也就是变量的类型

    Type getOwnerType()

    这个不太好理解,好不好理解代码都能解释清楚

    测试代码

    Field[] fields =  ParameterizedBean.class.getDeclaredFields();
        for(Field f:fields){
        if(f.getGenericType() instanceof ParameterizedType){
            ParameterizedType pType = (ParameterizedType) f.getGenericType();
    System.out.print("变量:"+f.getName());
            Type t = pType.getOwnerType();
            if(t == null){
    System.out.print("OwnerType:Null     ");
            }else{       System.out.print("OwnerType:"+t.getTypeName());
             }
        }
    }

    先放实体类

    public class ParameterizedBean {
        List<String> list1;
        List list2;
        Map<String,Long> map1;
        Map map2;
        Map.Entry<Long,Short> map3;
    }

    打印结果

    变量:list1     OwnerType:Null     
    
    变量:map1     OwnerType:Null     
    
    变量:map3     OwnerType:java.util.Map
    

    从打印结果来看,前面两个都为null,最后一个为Map类型

    这里放一下官方解释

    Returns a {@code Type} object representing the type that this type is a member of

    例子

    For example, if this type is {@code O<T>.I<S>},return a representation of {@code O<T>}

    依据解释,我们知道

    O<T>.I<S>类型的变量,调用getOwnerType()会返回O<T>

    以上就是ParameterizedType的内容

    展开全文
  • <div><p>Calls to TypeDescriptor.getRawType are unexpectedly expensive. Cache the result so that we don't repeatedly call it. R: </p><p>该提问来源于开源项目:apache/beam</p></div>
  • import org.spongepowered.api.data... //导入方法依赖的package包/类public static AbstractTagObject getValue(DataHolder dataHolder, Key key, Action error) {Class clazz = key.getElementToken().getRawType(...

    import org.spongepowered.api.data.DataHolder; //导入方法依赖的package包/类

    public static AbstractTagObject getValue(DataHolder dataHolder, Key key, Action error) {

    Class clazz = key.getElementToken().getRawType();

    if (!dataHolder.supports(key)) {

    if (FlagMap.class.isAssignableFrom(clazz)) {

    return new MapTag();

    }

    error.run("This data holder does not support the key '" + key.getId() + "'!");

    return new NullTag();

    }

    if (Boolean.class.isAssignableFrom(clazz)) {

    return new BooleanTag(dataHolder.getOrElse((Key>) key, false));

    }

    else if (CatalogType.class.isAssignableFrom(clazz)) {

    return new TextTag(dataHolder.getValue((Key>) key).orElseThrow(() -> new ErrorInducedException("Value not present!")).get().getId());

    }

    else if (Double.class.isAssignableFrom(clazz)) {

    return new NumberTag(dataHolder.getOrElse((Key>) key, 0.0));

    }

    else if (Enum.class.isAssignableFrom(clazz)) {

    return new TextTag(dataHolder.getValue((Key>) key).orElseThrow(() -> new ErrorInducedException("Empty enum value!")).get().name());

    }

    else if (Integer.class.isAssignableFrom(clazz)) {

    return new IntegerTag(dataHolder.getOrElse((Key>) key, 0));

    }

    else if (Vector3d.class.isAssignableFrom(clazz)) {

    return new LocationTag(dataHolder.getOrElse((Key>) key, new Vector3d(0, 0, 0)));

    }

    else if (Text.class.isAssignableFrom(clazz)) {

    return new FormattedTextTag(dataHolder.getOrElse((Key>) key, Text.EMPTY));

    }

    else if (FlagMap.class.isAssignableFrom(clazz)) {

    return new MapTag(dataHolder.getOrElse((Key>) key, new FlagMap(new MapTag())).flags.getInternal());

    }

    else {

    error.run("The value type '" + clazz.getName() + "' is not supported yet!");

    return new NullTag();

    }

    }

    展开全文
  • HashMap.comparableClassFor(Object x) instanceof getClass() getGenericInterfaces() getGenericSuperclass()和getSuperclass() ...getRawType() getActualTypeArguments() getOwnerType() compara...
  • <div><p>new GenericType[]>() {}.getRawType() returns bogus <h4>Affected Versions [2.0]</p><p>该提问来源于开源项目:eclipse-ee4j/jaxrs-api</p></div>
  • Type[] resultArgType = null; Type resultType = method.getGenericReturnType(); if (resultType instanceof ParameterizedType &... ((ParameterizedType) resultType).getRawType() == java...
  • JAVA 类型(Type)

    2020-08-03 19:30:24
    1.ParameterizedTypeParameterizedType表示参数化类型,也...在ParameterizedType接口中,有3个方法,分别是getActualTypeArguments()、 getRawType()、 getOwnerType();1.1 getActualTypeArguments获取泛型中的实...
  • Jackson将json转换成泛型List获取泛型类型/*** 获取泛型类型** @return*/protected Class getGenericsType() {final TypeToken typeToken = new ...final Class type = (Class) typeToken.getRawType();return t...
  • DefaultCallAdapterFactory , 是默认的CallAdapter。做了两件事情。 以OKHttp的方式执行Call, 也就是没有转换。 public @Nullable CallAdapter<... if (getRawType(returnType) != Call.class) { .
  • 编写类继承TypeReference class AAA<... Type rawType = this.getRawType(); System.out.println(rawType.getTypeName()); } } 编写具体类指定具体泛型 class BBB extends AAA<Person>{ } cl.
  • Java类型之参数化类型 源码 public interface ParameterizedType extends Type { //1....>中实际类型 Type[] getActualTypeArguments();... Type getRawType(); //3.如果这个类型是某个类型所属,...
  • java 反射

    2019-05-17 17:33:02
    遇到的 :getGenericType()/getType() getRawType()。。。。 type是所有类型的父接口 , 如原始类型(raw types 对应 Class)、 参数化类型(parameterized types 对应 ParameterizedType)、 数组类型(array types 对应...
  • mybatis-1-泛型-Type

    2019-08-30 21:59:36
    一.Type接口及其实现 1.ParameterizedType 表示参数化类型(带泛型的),如List<String>、Map<...1) Type getRawType(); 返回原始类型(去掉泛型); 2)Type[] getActualTypeArguments(); ...
  • 关于Java的Type接口

    2020-04-29 16:02:49
    Java的Type接口 Class 表示原始类型,其对象表示JVM中的一个类和接口。 ParameterizedType 表示多参数化类型如List<... Type getRawType() -- 返回参数化类型的原始类型,例如List<S...
  • 0 || s_ParentTypeToAddChildId.contains(currentNode.getUserData(Common.PropertyKey).getRawType()))</code> the rawType of <em>currentNode</em> is checked. In the rest of the code (lines 156 and 167), ...
  • ParameterizedType就是参数化类型的意思。解释:声明类型中带有“<>”的都是参数化类型,...getRawType()返回Tpye,得到“<>”前面的类型,比如List。getOwnerType()返回Type,O.I类型变量调用时会返...
  • function unique(arr) { if (!isArrayLink(arr)) { //不是类数组对象 return arr } let result = [] let objarr = [] ...let key = item + ‘_’ + getRawType(item); if (!obj[key]) { obj[key] = true r
  • 关于java反射获取泛型

    2017-06-23 10:58:00
    public class Test<T> { private final TypeToken<T> typeToken = new TypeToken<T>(getClass()) {};... private final Type type = typeToken.getRawType(); public void foo() ...
  • TypeToken源码阅读

    2016-11-04 14:07:31
    protected TypeToken() { this.type = getSuperclassTypeParameter(getClass()); //获取到泛型类的类型 this.rawType = (Class) $Gson$Types.getRawType(type); this.hashCode = type.hashCode(); } /*
  • ParameterizedType就是参数化类型的意思 解释 声明类型中带有“<>”的都是参数化类型,比如List<Integer>,Map<String,BigDecimal> getActualTypeArguments()返回Type[],即“<...getRawType()...
  • 修改返回的Model,在对应的属性的get方法上使用... 如 @JsonIgnore(true) ... public Type getRawType () { return Result.class; } 这样在返回的json中就不会存在...
  • I think this is generally useful and is simply a wrapper over <code>TypeToken.getRawType()</code>. I also noticed we were missing <code>getSuperType(), <code>getSubType, and <code>getType, but wasn&#...
  • 前面说活可以通过Class对象可以获得成员变量的类型,不管该成员变量是不是私有的,但是如果成员变量是有泛型类型的参数的话,如Map&lt;... ParameterizedType类提供了getRawType()方法,可...
  • // AND HERE ((Class)p.getRawType()).getSimpleName()+args(p); } } throw new IllegalArgumentException("Illegal fqcn arg = "+t); } <p>When patched like this, everything works just ...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

getrawtype