私は、クラス内のメソッドをアクセス修飾子、戻り値の型およびパラメータとともに表示するプログラムを作成しています。getTypeParametersはnull TypeVariable配列を返します
はここTest.java
class Test{
private int x;
public double y;
protected String z;
static long a;
public Test(){
x = 10;
y = 20;
z = "Hello";
a = 15L;
}
public void Print(String a){
a = a;
System.out.println("Executing Print function.");
}
private void hidden(double b){
b = b;
//private function
}
}
すべてのものが正常に動作しているが、私はラインでTypeVariable
の空白の配列を取得する理由私は理解していない私のコード
import java.lang.reflect.*;
class RefTest1{
public static void main(String[] args) throws Exception{
Test obj = new Test();
Class<?> c = obj.getClass();
System.out.printf("%n%s fields :-%n", obj.getClass());
Field[] fields = c.getDeclaredFields();
for(Field f : fields){
f.setAccessible(true);
int m = f.getModifiers();
if(Modifier.isStatic(m)){
System.out.printf("%s is static variable and its value is %s%n", f.getName(), f.get(obj));
}else if(Modifier.isPublic(m)){
System.out.printf("%s is public variable and its value is %s%n", f.getName(), f.get(obj));
}else if(Modifier.isPrivate(m)){
System.out.printf("%s is private variable and its value is %s%n", f.getName(), f.get(obj));
}else if(Modifier.isProtected(m)){
System.out.printf("%s is protected variable and its value is %s%n", f.getName(), f.get(obj));
}
}
System.out.printf("%n%s methods :-%n", obj.getClass());
Method[] methods = c.getDeclaredMethods();
for(Method meth : methods){
int m = meth.getModifiers();
meth.setAccessible(true);
if(Modifier.isStatic(m)){
System.out.printf("%s is static method%n", meth.getName());
}else if(Modifier.isPublic(m)){
System.out.printf("%s is public method%n", meth.getName());
}else if(Modifier.isPrivate(m)){
System.out.printf("%s is private method%n", meth.getName());
}else if(Modifier.isProtected(m)){
System.out.printf("%s is protected method%n", meth.getName());
}
System.out.printf("%nReturn Type :- %s%n", meth.getReturnType());
System.out.printf("%nParameters:-%n");
TypeVariable[] parameters = meth.getTypeParameters();
for(TypeVariable param : parameters){
System.out.printf("%s", param.getName());
}
}
System.out.println();
}
}
だTypeVariable[] parameters = meth.getTypeParameters();
ある人が私を正しい方向に向けることができますか?
ありがとうございました。
返し
getParameterTypes()
を使うべきだと思います。編集を見て、自分のコードに誤りがあると思います。 – Searock@Searock:元のコードに変更を加えた後、それは私にとってうまくいくパラメータタイプを出力します。ただし、タイプの後に改行を印刷しないので、見逃しやすいことに注意してください。 –
本当に申し訳ありません、それは私の間違いです。私はパラメータ型に気付かなかったため、改行のどこかに問題があります。あなたの迅速な対応に感謝します。 – Searock