0
public Object Convert(Class<T> Type) {
    if (Type == Integer.class) {
        return Integer.parseInt(DataInfo);
    } else if (Type == String.class ) {
        return DataInfo;
    } else if (Type == Double.class) {
        return Double.parseDouble(DataInfo);
    }
    return null;

}

これを行うことができる他の方法はありますか?

私はちょうど次のようなことをしたい: int X = Foo.Convert<int>();

文字列を受け取り、それを<Type><----- に変換します。私は試した:

public T Convert()
{
}

しかし、私はどこでも検索しましたが、Javaにはtypeof関数がありません:S 基本的に、ユーザーからの文字列をデータ型に変換しようとしています。

編集.. C++では通常行うので、私は尋ねています:

template <typename T>
inline T ToNumber(const std::string &Text){std::istringstream SS(Text); T Result; return (SS >> Result ? Result : 0);}

Javaでそれができるかどうか知りたかった..私はそれを次のように使用していました:

package test;

import java.io.*;
import java.util.Scanner;

public class Data<T> {
    private String DataInfo;

    public String ReadBuffer() throws IOException {
        BufferedReader Buffer = new BufferedReader(new InputStreamReader(System.in));
        return (DataInfo = Buffer.readLine());
    }

    public String ReadConsole() {
        Console Con = System.console();
        return (DataInfo = Con.readLine());
    }

    public String Read() {
        Scanner Reader = new Scanner(System.in);
        return (DataInfo = Reader.next());
    }

    public Object Convert(Class<T> Type) {
        if (Type == Integer.class) {
            return Integer.parseInt(DataInfo);
        } else if (Type == String.class ) {
            return DataInfo;
        } else if (Type == Double.class) {
            return Double.parseDouble(DataInfo);
        }
        return null;

    }
}
4

2 に答える 2

2

型消去のため、それは完全に不可能です。

あなたができる最善のことは、呼び出し元に a を渡すことClass<T>です。

于 2012-10-03T03:05:37.040 に答える
0

たぶん、com.google.inject.TypeLiteral を見ることができます。生の(非ジェネリック)タイプを保持します。

于 2015-03-04T00:34:15.277 に答える