java - 从另一个方法调用一个方法时如何传递参数

标签 java android methods parameters

我编写了以下代码来创建 key 对,将私钥存储在本地,然后从该文件中读取私钥。

当我尝试调用方法 savePrivateKey();和 retrievePrivateKey();从 testData(View view) 我收到一条错误消息,指出 (String[]) 无法应用于 ()。我希望能够在 testData(View view) 中调用上述两个函数;

public class EncryptionActivity extends ActionBarActivity {
private static final String TAG = EncryptionActivity.class.getSimpleName();

TextView textPublicKey;
TextView textPrivateKey;
Button buttonTest;
TextView privateKey;
Integer n;
String FILENAME = "privateKey";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_encryption);

    // output keys to screen
    textPrivateKey = (TextView)findViewById(R.id.textPrivateKey);
    textPrivateKey.setMovementMethod(new ScrollingMovementMethod());
    // textPublicKey = (TextView)findViewById(R.id.textPublicKey);
}

private void AsymmetricAlgorithmRSA() {
    // Generate key pair for 1024-bit RSA encryption and decryption
    Key publicKey = null;
    Key privateKey = null;
    try {
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
        kpg.initialize(1024);
        KeyPair kp = kpg.genKeyPair();
        publicKey = kp.getPublic();
        privateKey = kp.getPrivate();
    } catch (Exception e) {
        Log.e(TAG, "RSA key pair error");
    }

    //textPublicKey.setText(String.valueOf(publicKey));
    //textPrivateKey.setText(String.valueOf(privateKey));

}

public void savePrivateKey(String[] args) throws FileNotFoundException {
    try {
        // store private key locally
        String string = String.valueOf(privateKey);

        FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
        fos.write(string.getBytes());
        fos.close();
    }
    catch (Exception e) {
        Log.e(TAG, "Error saving file.");
    }
}

public void retrievePrivateKey(String[] args) throws FileNotFoundException {
    try {
        FileInputStream fis = openFileInput(FILENAME);
        StringBuffer fileContent = new StringBuffer("");

        byte[] buffer = new byte[1024];

        while ((n = fis.read(buffer)) != -1) ;
        {
            fileContent.append(new String(buffer, 0, n));
        }

        textPrivateKey.setText(String.valueOf(fileContent));
    }
    catch(IOException e) {
            Log.e(TAG, "Error opening file.");
        }
}

public void testData(View view){

    AsymmetricAlgorithmRSA();
    savePrivateKey();
    retrievePrivateKey();
}

最佳答案

savePrivateKeyretrievePrivateKey 都接受 String[],尽管它们不使用它们。只需删除这些冗余参数规范,您应该没问题:

public void savePrivateKey() throws FileNotFoundException {
    // code here...
}

public void retrievePrivateKey() throws FileNotFoundException {
    // code here...
}

关于java - 从另一个方法调用一个方法时如何传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30569507/

相关文章:

java - 需要自定义 Jackson 反序列化器的嵌套类

java - 想要在使用 GridView 时更新 getView 方法

java - 在 Java 中使用文件流写入和读取 ArrayList<Object> 时出现问题

scala - 数组 ("one", "two").mkString (":") 在方法返回 WrappedArray 中定义,而不是字符串

java - 从同一个类中的另一个方法调用 main 方法

java - 如何获取调用站点可能目标的数量?

java - 在类中定义 Logger 实例的最佳方法

java - java 8 中的 Lambda 嵌套集出错

android - 如何添加phonegap蓝牙插件

java - RecyclerView 没有更新 OnPostExecute() 上的项目