我对Java中泛型的概念不熟悉。我有一个泛型方法,它的返回类型也是泛型。
我收到此错误,< code >无法解析T中的方法“getAa”。两个类都有这个成员变量,但是java并不理解,因为sub方法返回的是这个对象的一般列表。有没有办法改掉这个错误?
下面是我的代码,
class A {
int aa;
int bb;
int getAa() {
return 1;
}
}
class B {
int aa;
int cc;
int getAa() {
return 1;
}
}
class C {
private <T> T genericMethodName(String s, Class<T> objectType) {
List<T> AlistOrBlist = method which returns a list of objects of A or B
AlistOrBlist = AlistOrBlist.stream()
.filter(record -> record.getAa().equals(""))
.collect(Collectors.toList());
return AlistOrBlist.get(0);
}
}
这里一个简单的方法是让< code>A和< code>B从一个声明< code>getAa()方法的公共父类继承。这可能是一个简单的接口。
但是,如果 A
和 B
必须保持不相关,则可以使调用方发送适用于 T
的具体类型的“getter”函数。
private <T> T genericMethodName(String s, ToIntFunction<T> mapper) {
List<T> AlistOrBlist = method which returns a list of objects of A or B
AlistOrBlist = AlistOrBlist.stream()
.filter(record -> mapper.applyAsInt(record) == 0)
.collect(Collectors.toList());
return AlistOrBlist.get(0);
}
如果您在解析< code>AlistOrBlist的调用中使用< code>objectType,您仍然可以接受它。如果< code>getAa()返回不同于< code>int的类型,则可以将< code>mapper键入为< code >函数
你这样称呼它:
A result = c.genericMethodName("param", A::getAa);
B result = c.genericMethodName("param", B::getAa);
我试图构建一个通用方法,它将作为参数并处理一些信息。 但不幸的是,它不能像我希望的那样工作。也许你有一些建议来改进我的代码并防止错误。 我在调用: 无法在 我在和调用: 无法解析方法 无法解析方法 我需要在方法中使用的枚举都具有相同的结构。 例如,其中一个看起来像这样: 我知道我可以通过使用 但我的方法不会是通用的。我想对我的任何枚举使用此方法。
我有一个java项目,我正在使用Allure生成测试报告。我发现了这个问题,需要使用以下代码重命名我的测试: 我已经从下面导入了Allure生命周期: 并使用以下依赖项: 但是,这句话很有诱惑力。getLifecycle()它正在抱怨无法解析“Allure”中的方法“getLifecycle”。 如何修复错误?
我是android开发的新手,正在尝试将recycler视图与setAdapter绑定,但遇到了以下错误“无法解析'ConstraintLayout'中的方法'setAdapter'” 我的主要活动。java代码是: 我的主要目标是使用ActivityMainBinding将recyclerView与setAdapter绑定 这就是我出错的地方- 它告诉我重命名引用,这到底意味着什么? 这项活动很
我试图使用for循环迭代一系列的日期,我打算使用plusDays增加开始日期,但是我得到了“Canland resolve method plusDays in date”。下面是我的代码:
我希望使用getter获取数据库的值。首先,我创建了user.java: 那么我已经创建了userRepository.java: 这是我尝试获取值的服务: 但我得到的错误是无法解析“optional”中的方法“get name”。为什么?
我试图在Android Studio中创建Ekart Adnroid应用程序,但无法解决此错误firebaseInstanceIdReceiver.getInstanceIdReciever().addonSuccessListener(new OnSuccessListener(){