Change private static final field using Java reflection

Assuming no SecurityManager is preventing you from doing this, you can use setAccessible to get around private and resetting the modifier to get rid of final, and actually modify a private static final field. Here’s an example: import java.lang.reflect.*; public class EverythingIsTrue { static void setFinalStatic(Field field, Object newValue) throws Exception { field.setAccessible(true); Field modifiersField … Read more

How to read the value of a private field from a different class in Java?

In order to access private fields, you need to get them from the class’s declared fields and then make them accessible: Field f = obj.getClass().getDeclaredField(“stuffIWant”); //NoSuchFieldException f.setAccessible(true); Hashtable iWantThis = (Hashtable) f.get(obj); //IllegalAccessException EDIT: as has been commented by aperkins, both accessing the field, setting it as accessible and retrieving the value can throw Exceptions, … Read more

Getting attributes of Enum’s value

This should do what you need. try { var enumType = typeof(FunkyAttributesEnum); var memberInfos = enumType.GetMember(FunkyAttributesEnum.NameWithoutSpaces1.ToString()); var enumValueMemberInfo = memberInfos.FirstOrDefault(m => m.DeclaringType == enumType); var valueAttributes = enumValueMemberInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); var description = ((DescriptionAttribute)valueAttributes[0]).Description; } catch { return FunkyAttributesEnum.NameWithoutSpaces1.ToString() }

Get generic type of class at runtime

As others mentioned, it’s only possible via reflection in certain circumstances. If you really need the type, this is the usual (type-safe) workaround pattern: public class GenericClass<T> { private final Class<T> type; public GenericClass(Class<T> type) { this.type = type; } public Class<T> getMyType() { return this.type; } }

Programmatic equivalent of default(Type)

In case of a value type use Activator.CreateInstance and it should work fine. When using reference type just return null public static object GetDefault(Type type) { if(type.IsValueType) { return Activator.CreateInstance(type); } return null; } In the newer version of .net such as .net standard, type.IsValueType needs to be written as type.GetTypeInfo().IsValueType

Checking if a variable is defined?

Use the defined? keyword (documentation). It will return a String with the kind of the item, or nil if it doesn’t exist. >> a = 1 => 1 >> defined? a => “local-variable” >> defined? b => nil >> defined? nil => “nil” >> defined? String => “constant” >> defined? 1 => “expression” As skalee … Read more