Recuperar parâmetro dentro de um método

Oi galera, esse é meu primeiro post e vim recorrer a vocês sobre um problema q nao to conseguindo resolver.

Tenho que recuperar um dos atributos que passo por parametro em um metodo.

Não posso mudar o método, pois o método pertence a uma dll a qual nao tenho acesso ao código, somente a dll.

Essa é minha classe/problema:


import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;

public class Criptografar {

	private String senha;
	private String novaSenha;
	
	public Criptografar(){
		
		senha = new String("1234"); //Esse valor inicial é só pra teste
		novaSenha = new String();
	}
	
	public String getSenha(){ return this.senha; }
       public String getNovaSenha(){ return this.novaSenha; } 	

    //Interface JNA pra acessar a dll
    public interface CLibrary extends Library {
        CLibrary INSTANCE = (CLibrary)
            Native.loadLibrary((Platform.isWindows() ? "Criptografar" : "c"),
                               CLibrary.class);
    
        void NovaSenha(String s1, String s2);
       
    }   

    public static void main(String[] args) {
    	
    	Criptografar teste = new Criptografar();
    	    	
        //Aqui mora o problema
        CLibrary.INSTANCE.NovaSenha(teste.getSenha(), teste.getNovaSenha()); 
        System.out.println(teste.getNovaSenha());    	
    }
}

Essa ainda é só uma classe q eu tava fazendo de teste, meu maior problema é que não posso alterar a dll, pois a outra empresa não disponibiliza. E essa função da dll deles não retorna a nova senha criptografada, ao inves disso ela somente modifica o 2º parâmetro. Como esse parâmetro é uma String, não sei como passar por referência pra função.

E ae, alguém pode me dar uma luz?

E então!?

Já conseguiu resolver?

Nada ainda =/
Segunda-feira no trabalho e meu pescoço na berlinda…

Porque você não passa um char[]?

Aliás, existem funções especiais do JNI para manipular Strings. Neste caso, você cria uma camada extra em C que intermedia a chamada a sua DLL com a chamada ao java, e nesta camada, você faz o que quiser.

Strings java normalmente não devem ser passadas para métodos nativos que não saibam que elas são especificamente do java,. Ao invés disso, ou a parte nativa tem plena ciência que elas se originam no java ou então alguma outra coisa as converte para a forma nativa desejada.

http://java.sun.com/docs/books/jni/download/jni.pdf <-- Leia em especial os capítulos 3 e 9.

victorwss, vlw pela ajuda. Na verdade eu resolvi o problema justamente com JNI (ou resolvia ou ia pra rua ¬¬) mas pra isso tive q criar uma nova dll q serviu como um “middleware” e minha intenção com o JNA era justamente não ter que depender de mais uma dll sabe?

Mas por enquanto é problema resolvido, vlw ae!

Ô MGuará!

      Você pretende pegar o conteúdo (Valor) de um método?

      É isso que estou entendendo?

      Se for isso, seu problema já está resolvido.

      Porém preciso saber?

[]´s