diff --git a/baksmali/src/main/java/org/jf/baksmali/Adaptors/EncodedValue/EncodedValueAdaptor.java b/baksmali/src/main/java/org/jf/baksmali/Adaptors/EncodedValue/EncodedValueAdaptor.java index 19f8750e..f4d442e0 100644 --- a/baksmali/src/main/java/org/jf/baksmali/Adaptors/EncodedValue/EncodedValueAdaptor.java +++ b/baksmali/src/main/java/org/jf/baksmali/Adaptors/EncodedValue/EncodedValueAdaptor.java @@ -60,7 +60,7 @@ public abstract class EncodedValueAdaptor { return; case ValueType.ENUM: writer.write(".enum "); - writer.write(((EnumEncodedValue)encodedValue).getValue()); + ReferenceUtil.writeFieldDescriptor(writer, ((EnumEncodedValue)encodedValue).getValue()); return; case ValueType.FIELD: ReferenceUtil.writeFieldDescriptor(writer, ((FieldEncodedValue)encodedValue).getValue()); diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedEncodedValue.java index 50ca2587..fdb10b78 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedEncodedValue.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedEncodedValue.java @@ -92,7 +92,8 @@ public abstract class DexBackedEncodedValue { reader.readSizedSmallUint(valueArg + 1))); case ValueType.ENUM: Preconditions.checkValueArg(valueArg, 3); - return new ImmutableEnumEncodedValue(reader.getField(reader.readSizedSmallUint(valueArg + 1))); + return new ImmutableEnumEncodedValue(new DexBackedFieldReference(reader.getDexBuffer(), + reader.readSizedSmallUint(valueArg + 1))); case ValueType.ARRAY: Preconditions.checkValueArg(valueArg, 0); return new DexBackedArrayEncodedValue(reader); diff --git a/dexlib2/src/main/java/org/jf/dexlib2/iface/value/EnumEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/iface/value/EnumEncodedValue.java index 5cd60aa0..7aea48de 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/iface/value/EnumEncodedValue.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/iface/value/EnumEncodedValue.java @@ -31,8 +31,10 @@ package org.jf.dexlib2.iface.value; +import org.jf.dexlib2.iface.reference.FieldReference; + import javax.annotation.Nonnull; public interface EnumEncodedValue extends EncodedValue { - @Nonnull String getValue(); + @Nonnull FieldReference getValue(); } diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEnumEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEnumEncodedValue.java index 5e64389c..81cdb7a9 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEnumEncodedValue.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEnumEncodedValue.java @@ -32,15 +32,16 @@ package org.jf.dexlib2.immutable.value; import org.jf.dexlib2.base.value.BaseEnumEncodedValue; +import org.jf.dexlib2.iface.reference.FieldReference; import org.jf.dexlib2.iface.value.EnumEncodedValue; import javax.annotation.Nonnull; public class ImmutableEnumEncodedValue extends BaseEnumEncodedValue implements ImmutableEncodedValue, EnumEncodedValue { - @Nonnull public final String value; + @Nonnull public final FieldReference value; - public ImmutableEnumEncodedValue(@Nonnull String value) { + public ImmutableEnumEncodedValue(@Nonnull FieldReference value) { this.value = value; } @@ -51,5 +52,5 @@ public class ImmutableEnumEncodedValue extends BaseEnumEncodedValue return new ImmutableEnumEncodedValue(enumEncodedValue.getValue()); } - @Nonnull @Override public String getValue() { return value; } + @Nonnull @Override public FieldReference getValue() { return value; } }