Extract java SdkMemberType instances as vars

This will allow them to be used from elsewhere in a follow up change.

Bug: 177892522
Test: m nothing
Change-Id: I60e94e148af5b1810aea7f724cba090b49ae758e
diff --git a/java/java.go b/java/java.go
index adb0c56..7258dce 100644
--- a/java/java.go
+++ b/java/java.go
@@ -68,9 +68,32 @@
 func RegisterJavaSdkMemberTypes() {
 	// Register sdk member types.
 	android.RegisterSdkMemberType(javaHeaderLibsSdkMemberType)
+	android.RegisterSdkMemberType(javaLibsSdkMemberType)
+	android.RegisterSdkMemberType(javaBootLibsSdkMemberType)
+	android.RegisterSdkMemberType(javaTestSdkMemberType)
+}
+
+var (
+	// Supports adding java header libraries to module_exports and sdk.
+	javaHeaderLibsSdkMemberType = &librarySdkMemberType{
+		android.SdkMemberTypeBase{
+			PropertyName: "java_header_libs",
+			SupportsSdk:  true,
+		},
+		func(_ android.SdkMemberContext, j *Library) android.Path {
+			headerJars := j.HeaderJars()
+			if len(headerJars) != 1 {
+				panic(fmt.Errorf("there must be only one header jar from %q", j.Name()))
+			}
+
+			return headerJars[0]
+		},
+		sdkSnapshotFilePathForJar,
+		copyEverythingToSnapshot,
+	}
 
 	// Export implementation classes jar as part of the sdk.
-	exportImplementationClassesJar := func(_ android.SdkMemberContext, j *Library) android.Path {
+	exportImplementationClassesJar = func(_ android.SdkMemberContext, j *Library) android.Path {
 		implementationJars := j.ImplementationAndResourcesJars()
 		if len(implementationJars) != 1 {
 			panic(fmt.Errorf("there must be only one implementation jar from %q", j.Name()))
@@ -78,17 +101,17 @@
 		return implementationJars[0]
 	}
 
-	// Register java implementation libraries for use only in module_exports (not sdk).
-	android.RegisterSdkMemberType(&librarySdkMemberType{
+	// Supports adding java implementation libraries to module_exports but not sdk.
+	javaLibsSdkMemberType = &librarySdkMemberType{
 		android.SdkMemberTypeBase{
 			PropertyName: "java_libs",
 		},
 		exportImplementationClassesJar,
 		sdkSnapshotFilePathForJar,
 		copyEverythingToSnapshot,
-	})
+	}
 
-	// Register java boot libraries for use in sdk.
+	// Supports adding java boot libraries to module_exports and sdk.
 	//
 	// The build has some implicit dependencies (via the boot jars configuration) on a number of
 	// modules, e.g. core-oj, apache-xml, that are part of the java boot class path and which are
@@ -99,7 +122,7 @@
 	// either java_libs, or java_header_libs would end up exporting more information than was strictly
 	// necessary. The java_boot_libs property to allow those modules to be exported as part of the
 	// sdk/module_exports without exposing any unnecessary information.
-	android.RegisterSdkMemberType(&librarySdkMemberType{
+	javaBootLibsSdkMemberType = &librarySdkMemberType{
 		android.SdkMemberTypeBase{
 			PropertyName: "java_boot_libs",
 			SupportsSdk:  true,
@@ -110,16 +133,15 @@
 		exportImplementationClassesJar,
 		sdkSnapshotFilePathForJar,
 		onlyCopyJarToSnapshot,
-	})
+	}
 
-	// Register java test libraries for use only in module_exports (not sdk).
-	android.RegisterSdkMemberType(&testSdkMemberType{
+	// Supports adding java test libraries to module_exports but not sdk.
+	javaTestSdkMemberType = &testSdkMemberType{
 		SdkMemberTypeBase: android.SdkMemberTypeBase{
 			PropertyName: "java_tests",
 		},
-	})
-
-}
+	}
+)
 
 // JavaInfo contains information about a java module for use by modules that depend on it.
 type JavaInfo struct {
@@ -606,23 +628,6 @@
 	}
 }
 
-var javaHeaderLibsSdkMemberType android.SdkMemberType = &librarySdkMemberType{
-	android.SdkMemberTypeBase{
-		PropertyName: "java_header_libs",
-		SupportsSdk:  true,
-	},
-	func(_ android.SdkMemberContext, j *Library) android.Path {
-		headerJars := j.HeaderJars()
-		if len(headerJars) != 1 {
-			panic(fmt.Errorf("there must be only one header jar from %q", j.Name()))
-		}
-
-		return headerJars[0]
-	},
-	sdkSnapshotFilePathForJar,
-	copyEverythingToSnapshot,
-}
-
 // java_library builds and links sources into a `.jar` file for the device, and possibly for the host as well.
 //
 // By default, a java_library has a single variant that produces a `.jar` file containing `.class` files that were