src/main/java/com/googlecode/objectify/repackaged/gentyref/GenericTypeReflector.java
public static Type getExactFieldType(Field f, Type type) {
		Type returnType = f.getGenericType();
		Type exactDeclaringType = getExactSuperType(capture(type), f.getDeclaringClass());
		if (exactDeclaringType == null) { // capture(type) is not a subtype of f.getDeclaringClass()
			throw new IllegalArgumentException("The field " + f + " is not a member of type " + type);
		}
		return mapTypeParameters(returnType, exactDeclaringType);
	}
public static Type getExactFieldType(Field f, Type type) {
		Type returnType = f.getGenericType();
		Type exactDeclaringType = getExactSuperType(capture(type), f.getDeclaringClass());
		if (exactDeclaringType == null) { // capture(type) is not a subtype of f.getDeclaringClass()
			throw new IllegalArgumentException("The field " + f + " is not a member of type " + type);
		}
		return mapTypeParameters(returnType, exactDeclaringType);
	}
public static Type getExactFieldType ( Field f , Type type ) { Type returnType = f . getGenericType ( ) ; Type exactDeclaringType = getExactSuperType ( capture ( type ) , f . getDeclaringClass ( ) ) ; if ( exactDeclaringType == null ) { // capture(type) is not a subtype of f.getDeclaringClass() throw new IllegalArgumentException ( "The field " + f + " is not a member of type " + type ) ; } return mapTypeParameters ( returnType , exactDeclaringType ) ; }
Returns the exact type of the given field in the given type.
This may be different from <tt>f.getGenericType()</tt> when the field was declared in a superclass,
or <tt>type</tt> has a type parameter that is used in the type of the field, or <tt>type</tt> is a raw type.
Returns the exact type of the given field in the given type . This may be different from <tt > f . getGenericType () < / tt > when the field was declared in a superclass or <tt > type< / tt > has a type parameter that is used in the type of the field or <tt > type< / tt > is a raw type .