java有关问题: 类型不匹配:不能从元素类型 Object 转换为 String

java问题: 类型不匹配:不能从元素类型 Object 转换为 String
在Eclipse里输入以下代码报错 不能从元素类型 Object 转换为 String:(红色部分为报错的代码)

package com.android.signapk;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.security.DigestOutputStream;
import java.security.GeneralSecurityException;
import java.security.Key;
import java.security.KeyFactory;
import java.security.MessageDigest;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.SignatureException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Enumeration;
import java.util.Map;
import java.util.Map.Entry;
import java.util.jar.Attributes;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;

import javax.crypto.Cipher;
import javax.crypto.EncryptedPrivateKeyInfo;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.security.auth.x500.X500Principal;

import sun.misc.BASE64Encoder;
import sun.security.pkcs.ContentInfo;
import sun.security.pkcs.PKCS7;
import sun.security.pkcs.SignerInfo;
import sun.security.x509.AlgorithmId;
import sun.security.x509.X500Name;

class SignApk
{
  private static X509Certificate readPublicKey(File file)
    throws IOException, GeneralSecurityException
  {
    FileInputStream input = new FileInputStream(file);
    try {
      CertificateFactory cf = CertificateFactory.getInstance("X.509");
      return (X509Certificate)cf.generateCertificate(input);
    } finally {
      input.close();
    }
  }

  private static String readPassword(File keyFile)
  {
    System.out.print("Enter password for " + keyFile + " (password will not be hidden): ");
    System.out.flush();
    BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
    try {
      return stdin.readLine(); } catch (IOException ex) {
    }
    return null;
  }

  private static KeySpec decryptPrivateKey(byte[] encryptedPrivateKey, File keyFile)
    throws GeneralSecurityException
  {
    EncryptedPrivateKeyInfo epkInfo;
    try
    {
      epkInfo = new EncryptedPrivateKeyInfo(encryptedPrivateKey);
    }
    catch (IOException ex) {
      return null;
    }

    char[] password = readPassword(keyFile).toCharArray();

    SecretKeyFactory skFactory = SecretKeyFactory.getInstance(epkInfo.getAlgName());
    Key key = skFactory.generateSecret(new PBEKeySpec(password));

    Cipher cipher = Cipher.getInstance(epkInfo.getAlgName());
    cipher.init(2, key, epkInfo.getAlgParameters());
    try
    {
      return epkInfo.getKeySpec(cipher);
    } catch (InvalidKeySpecException ex) {
      System.err.println("signapk: Password for " + keyFile + " may be bad.");
      throw ex;
    }
  }

  private static PrivateKey readPrivateKey(File file)
    throws IOException, GeneralSecurityException
  {
    DataInputStream input = new DataInputStream(new FileInputStream(file));
    try {
      byte[] bytes = new byte[(int)file.length()];
      input.read(bytes);

      KeySpec spec = decryptPrivateKey(bytes, file);
      if (spec == null) {