diff --git a/bind/genjava.go b/bind/genjava.go
index 1989210..6ef0a30 100644
--- a/bind/genjava.go
+++ b/bind/genjava.go
@@ -634,7 +634,7 @@
 	if !javaLetterDigitRE.MatchString(name) {
 		name = fmt.Sprintf("p%d", pos)
 	}
-	return name
+	return javaNameReplacer(name)
 }
 
 func (g *JavaGen) genFuncSignature(o *types.Func, jm *java.Func, hasThis bool) {
diff --git a/bind/genobjc.go b/bind/genobjc.go
index 67918c3..c758242 100644
--- a/bind/genobjc.go
+++ b/bind/genobjc.go
@@ -573,7 +573,8 @@
 }
 
 func (g *ObjcGen) paramName(params *types.Tuple, pos int) string {
-	return basicParamName(params, pos)
+	name := basicParamName(params, pos)
+	return objcNameReplacer(name)
 }
 
 func (g *ObjcGen) genFuncH(obj *types.Func) {
diff --git a/bind/testdata/classes.java.c.golden b/bind/testdata/classes.java.c.golden
index fd89a34..6b90e75 100644
--- a/bind/testdata/classes.java.c.golden
+++ b/bind/testdata/classes.java.c.golden
@@ -240,8 +240,8 @@
 JNIEXPORT void JNICALL
 Java_go_java_Runnable_run(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
-    int32_t _this = go_seq_to_refnum(env, __this__);
-    proxyjava_Runnable_Run(o, _this);
+    int32_t _this_ = go_seq_to_refnum(env, __this__);
+    proxyjava_Runnable_Run(o, _this_);
 }
 
 JNIEXPORT void JNICALL
diff --git a/bind/testdata/keywords.go b/bind/testdata/keywords.go
index 46ecb52..d5a7733 100644
--- a/bind/testdata/keywords.go
+++ b/bind/testdata/keywords.go
@@ -59,3 +59,6 @@
 	Null()
 	True()
 }
+
+func Const(id string)        {}
+func Static(strictfp string) {}
diff --git a/bind/testdata/keywords.go.golden b/bind/testdata/keywords.go.golden
index 58a7c3d..d9fba9b 100644
--- a/bind/testdata/keywords.go.golden
+++ b/bind/testdata/keywords.go.golden
@@ -607,3 +607,15 @@
 func (p *proxykeywords_KeywordCaller) While() {
 	C.cproxykeywords_KeywordCaller_While(C.int32_t(p.Bind_proxy_refnum__()))
 }
+
+//export proxykeywords__Const
+func proxykeywords__Const(param_id C.nstring) {
+	_param_id := decodeString(param_id)
+	keywords.Const(_param_id)
+}
+
+//export proxykeywords__Static
+func proxykeywords__Static(param_strictfp C.nstring) {
+	_param_strictfp := decodeString(param_strictfp)
+	keywords.Static(_param_strictfp)
+}
diff --git a/bind/testdata/keywords.java.c.golden b/bind/testdata/keywords.java.c.golden
index a84742d..9dd20f6 100644
--- a/bind/testdata/keywords.java.c.golden
+++ b/bind/testdata/keywords.java.c.golden
@@ -129,6 +129,18 @@
 }
 
 JNIEXPORT void JNICALL
+Java_go_keywords_Keywords_const_1(JNIEnv* env, jclass _clazz, jstring id) {
+    nstring _id = go_seq_from_java_string(env, id);
+    proxykeywords__Const(_id);
+}
+
+JNIEXPORT void JNICALL
+Java_go_keywords_Keywords_static_1(JNIEnv* env, jclass _clazz, jstring strictfp_) {
+    nstring _strictfp_ = go_seq_from_java_string(env, strictfp_);
+    proxykeywords__Static(_strictfp_);
+}
+
+JNIEXPORT void JNICALL
 Java_go_keywords_Keywords_00024proxyKeywordCaller_abstract_1(JNIEnv* env, jobject __this__) {
     int32_t o = go_seq_to_refnum_go(env, __this__);
     proxykeywords_KeywordCaller_Abstract(o);
diff --git a/bind/testdata/keywords.java.golden b/bind/testdata/keywords.java.golden
index 04e7cb4..4334f81 100644
--- a/bind/testdata/keywords.java.golden
+++ b/bind/testdata/keywords.java.golden
@@ -151,4 +151,6 @@
     }
     
     
+    public static native void const_(String id);
+    public static native void static_(String strictfp_);
 }
diff --git a/bind/testdata/keywords.objc.h.golden b/bind/testdata/keywords.objc.h.golden
index d8ba6f5..11b6f95 100644
--- a/bind/testdata/keywords.objc.h.golden
+++ b/bind/testdata/keywords.objc.h.golden
@@ -69,6 +69,10 @@
 - (void)while;
 @end
 
+FOUNDATION_EXPORT void GoKeywordsConst(NSString* id_);
+
+FOUNDATION_EXPORT void GoKeywordsStatic(NSString* strictfp);
+
 @class GoKeywordsKeywordCaller;
 
 @interface GoKeywordsKeywordCaller : NSObject <goSeqRefInterface, GoKeywordsKeywordCaller> {
diff --git a/bind/testdata/keywords.objc.m.golden b/bind/testdata/keywords.objc.m.golden
index 837ce6d..2454880 100644
--- a/bind/testdata/keywords.objc.m.golden
+++ b/bind/testdata/keywords.objc.m.golden
@@ -286,6 +286,16 @@
 
 
 
+void GoKeywordsConst(NSString* id_) {
+	nstring _id_ = go_seq_from_objc_string(id_);
+	proxykeywords__Const(_id_);
+}
+
+void GoKeywordsStatic(NSString* strictfp) {
+	nstring _strictfp = go_seq_from_objc_string(strictfp);
+	proxykeywords__Static(_strictfp);
+}
+
 void cproxykeywords_KeywordCaller_Abstract(int32_t refnum) {
 	@autoreleasepool {
 		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
