@Override public String toString() { switch (type) { case ARRAY_ENTRY: case INSTANCE_FIELD: return getDisplayName() + " = " + value; case STATIC_FIELD: return "static " + getDisplayName() + " = " + value; case LOCAL: return getDisplayName(); default: throw new IllegalStateException( "Unexpected type " + type + " name = " + name + " value = " + value); } } }
LeakTraceElement(LeakReference reference, Holder holder, List<String> classHierarchy, String extra, Exclusion exclusion, List<LeakReference> leakReferences) { this.reference = reference; this.referenceName = reference == null ? null : reference.getDisplayName(); this.type = reference == null ? null : reference.type; this.holder = holder; this.classHierarchy = Collections.unmodifiableList(new ArrayList<>(classHierarchy)); this.className = classHierarchy.get(0); this.extra = extra; this.exclusion = exclusion; this.fieldReferences = unmodifiableList(new ArrayList<>(leakReferences)); List<String> stringFields = new ArrayList<>(); for (LeakReference leakReference : leakReferences) { stringFields.add(leakReference.toString()); } fields = Collections.unmodifiableList(stringFields); }
public String toString(boolean maybeLeakCause) { String string = ""; if (reference != null && reference.type == STATIC_FIELD) { string += "static "; } if (holder == ARRAY || holder == THREAD) { string += holder.name().toLowerCase(US) + " "; } string += getSimpleClassName(); if (reference != null) { String referenceName = reference.getDisplayName(); if (maybeLeakCause) { referenceName = "!(" + referenceName + ")!"; } string += "." + referenceName; } if (extra != null) { string += " " + extra; } if (exclusion != null) { string += " , matching exclusion " + exclusion.matching; } return string; }
String referenceName = element.reference.getDisplayName().replaceAll("<", "<") .replaceAll(">", ">");