获取java中泛型(T在<;T扩展…>;)的名称
我有一个关于这个类和方法的例子:获取java中泛型(T在<;T扩展…>;)的名称,java,generics,Java,Generics,我有一个关于这个类和方法的例子: public class Runner<T extends Domain> implements Runnable { public void run() { ... Runtime.getRuntime().exec(...) ... } 公共类运行程序实现可运行{ 公开募捐{ ... Runtime.getRuntime().exec(…) ... } 我需要执行该文件,并将T的类型作为一个agment传递给它(或其他一
public class Runner<T extends Domain> implements Runnable {
public void run() {
...
Runtime.getRuntime().exec(...)
...
}
公共类运行程序实现可运行{
公开募捐{
...
Runtime.getRuntime().exec(…)
...
}
我需要执行该文件,并将T的类型作为一个agment传递给它(或其他一些字符串,允许我区分执行文件中的不同域,但T是扩展类域
的类,其中域
是一个抽象类)
我曾考虑添加一个返回类名称的静态方法,并调用T.getName();
,但这在抽象类中是无法实现的
我该怎么做
谢谢!
private void runFile(Class classOfT){…}
private void runFile(Class classOfT){…}
将类型传递到类的构造函数中:
public class Runner<T extends Domain> implements Runnable {
private Class<T> clazz;
public Runner(Class<T> clazz) {
this.clazz = clazz;
}
public void run() {
// Use your class here
String name = clazz.getName();
}
}
公共类运行程序实现可运行{
私人课堂;
公共跑步者(班级){
this.clazz=clazz;
}
公开募捐{
//在这里上课
字符串名称=clazz.getName();
}
}
将类型传递给类的构造函数:
public class Runner<T extends Domain> implements Runnable {
private Class<T> clazz;
public Runner(Class<T> clazz) {
this.clazz = clazz;
}
public void run() {
// Use your class here
String name = clazz.getName();
}
}
公共类运行程序实现可运行{
私人课堂;
公共跑步者(班级){
this.clazz=clazz;
}
公开募捐{
//在这里上课
字符串名称=clazz.getName();
}
}
您可以为类创建构造函数,在其中可以传递类
对象并使用它:
private Class<T> clazz;
public Runner(Class<T> clazz) {
this.clazz = clazz;
}
// ...
public void runFile() {
// do smth with
clazz.getName()
}
私有类clazz;
公共跑步者(班级){
this.clazz=clazz;
}
// ...
公共void运行文件(){
//与…打交道
clazz.getName()
}
您可以为类创建构造函数,在其中可以传递类
对象并使用它:
private Class<T> clazz;
public Runner(Class<T> clazz) {
this.clazz = clazz;
}
// ...
public void runFile() {
// do smth with
clazz.getName()
}
私有类clazz;
公共跑步者(班级){
this.clazz=clazz;
}
// ...
公共void运行文件(){
//与…打交道
clazz.getName()
}
如果需要访问runFile
方法中给定的T
,可以将T
作为参数传递并从那里引用它(例如T.getClass().getName()
)。如果没有实际的t
实例可供引用,则无法在Runner
实例中发现t
的运行时类型。好的,找到了。谢谢!如果需要访问runFile
方法中给定的t
,可以将t
作为参数传递并从那里引用它(例如t.getClass().getName()
)。你不能做的是在你的Runner
实例中发现t
的运行时类型,而没有一个实际的t
实例可供参考。好的,明白了..谢谢!哈,同时使用相同的解决方案:)哈,同时使用相同的解决方案:)