A simpler way of looking at this:

public int maxSubArray(int[] nums) {
if(nums.length == 1) return nums[0];
int m = nums.length / 2;
int left_MSA = maxSubArray(Arrays.copyOfRange(nums,0,m));
int right_MSA = maxSubArray(Arrays.copyOfRange(nums,m,nums.length));
int leftMaxSum = Integer.MIN_VALUE, rightMaxSum = Integer.MIN_VALUE;
int midMaxSum = Integer.MIN_VALUE;
int temp = 0;
for(int i = m; i < nums.length; i++) {
temp += nums[i];
rightMaxSum = Math.max(rightMaxSum, temp);
}
temp = 0;
for(int i = m-1; i >=0; i--) {
temp += nums[i];
leftMaxSum = Math.max(leftMaxSum, temp);
}
midMaxSum = leftMaxSum + rightMasxSum;
int interMax = Math.max(left_MSA, right_MSA);
return Math.max(interMax, midMaxSum);
}