The `getType` method you are calling directly returns a `DisplayType` value rather than a `String` so change your code to:

 
    DisplayType displayType = record.getDescribe().fields
        .getMap()
        .get(fieldName)
        .getDescribe()
        .getType();

See the [DescribeFieldResult documentation](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_fields_describe.htm#apex_Schema_DescribeFieldResult_getType) for more detail.

**PS**

In response to the first comment, in your approach, you are running `Type.forName` on one of the `enum` values e.g. `DisplayType.Picklist` not the `enum` type `DisplayType`. So it's not going to work even if Apex treated `enum` as a special kind of `class`.

Also note that trying to cast a field value to a `DisplayType` won't work. For types other than strings you will likely need to write your own type conversion code based on the `DisplayType` or likely better based on the `SOAPType` that is also available from a describe call.

Given this complexity do consider if your overall approach here is appropriate.