I agree with @danielm ILayerFile is a more appropriate interface for interacting with a Layer File. Below is a code snippet to get you going:
Dim sPath As String
sPath = "C:\scratch\test.lyr"
Dim pLayerFile As ILayerFile
pLayerFile = New LayerFile
Dim pGFL As IGeoFeatureLayer
pGFL = pLayerFile.Layer
Dim pURend As IUniqueValueRenderer
As suggested by @KirkKuykendall:
Instead of using new MxDocumentClass to start arcmap.exe, you might
try the more customary way ... using ProcessStartInfo with
ProcessWindowStyle.Minimized, then Process.Start. Then listen to
AppROTEvents.AppAdded to get an IApplication reference.
You should take a closer look at all the interfaces that IFeatureLayer implements for a lot of this information. That's .NET documentation, but it will mirror Java pretty closely.
A lot of what you want is on the IGeoFeatureLayer, IDataLayer, and IFeatureLayerDefinition. I have not tested the below code, but it's basically what you want to be doing.
ITopologicalOperator.Difference is behaving correctly. The issue is that the SpatialQuery is not returning the expected feature. The following query returns at least two if not all three blue features in the screenshot above:
ISpatialFilter spaFil = new SpatialFilterClass();
spaFil.Geometry = mergedSUOFeature.Shape;
spaFil.GeometryField = publicHighwaysFC....