Tag: 通配符

在List中使用通配符时编译时错误

List list = new Arraylist(); list.add(“foo”); 给定一段代码给我编译时错误。我不明白为什么我不能在列表中添加字符串。 但是代码意味着我们可以在列表中添加String类对象和它的派生类对象,但我仍然得到错误原因

如何参数化可比接口?

我有一个主类 – 模拟器 – 使用另外两个类 – Producer和Evaluator 。 生产者生成结果,而评估者评估这些结果。 模拟器通过查询生产者然后将结果传送给评估者来控制执行流程。 Producer和Evaluator的实际实现在运行时是已知的,在编译时我只知道它们的接口。 下面我粘贴接口,示例实现和Simulator类的内容。 旧代码 package com.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; /** * Producers produce results. I do not care what is their type, but the values * in the map have to be comparable amongst themselves. */ interface IProducer { […]

Javagenerics – 实现像map这样的高阶函数

我决定在Java中编写一些常见的高阶函数(map,filter,reduce等),这些函数通过generics是类型安全的,而且我遇到了在一个特定函数中匹配通配符的问题。 为了完整,函子接口是这样的: /** * The interface containing the method used to map a sequence into another. * @param The type of the elements in the source sequence. * @param The type of the elements in the destination sequence. */ public interface Transformation { /** * The method that will be used in map. * @param […]

用于将字符串与通配符模式匹配的递归函数

所以我一整天都试图解决这个任务,只是无法得到它。 以下函数接受2个字符串,第2个(不是第1个)可能包含* (星号)。 *是字符串的替换(空,1个字符或更多),它可以出现(仅在s2中)一次,两次,更多或根本不存在,它不能与另一个* ( ab**c )相邻,无需检查。 public static boolean samePattern(String s1, String s2) 如果字符串具有相同的模式,则返回true。 它必须是递归的 ,不能使用任何循环,静态和全局变量。 可以使用局部变量和方法重载。 只能使用以下方法: charAt(i) , substring(i) , substring(i, j) , length() 。 例子: 1: TheExamIsEasy ; 2: The*xamIs*y →true 1: TheExamIsEasy ; 2: Th*mIsEasy* →true 1: TheExamIsEasy ; 2: * →true 1: TheExamIsEasy ; 2: TheExamIsEasy →true 1: TheExamIsEasy […]

Java下界通配符

我正在努力解决这个问题,并且想知道是否有人可以解释原因 我有3个class级员工,人,天使 员工延伸人和人延伸天使 当我尝试执行此代码时: public static void insertElements(List list){ list.add(new Person(“Mike”, 42)); list.add(new Employee()); list.add(new Angel()); } 我收到一个错误 类型List中的方法add(捕获#5-of?super Person)不适用于参数(Angel) 我一直在阅读文档意味着任何类型的X或X的超类(所以在我的情况下,Angel是Person的超类)并且应该被允许? 显然不是! 有没有人有任何简单的例子?

如何使用通配符实例化generics?

让我们使用外卡研究一些通用的情况: 1 这段代码 List list = new ArrayList(); 生成以下错误: required: class or interface without bounds found: ? 2 但是这个 List list = new ArrayList< Set >(); 汇编成功。 3 和这个: List<Set> list = new ArrayList< Set >(); 编译成功也是如此。 4 但是这个: List<Set<Map>> list = new ArrayList< Set<Map> >(); 生成 required: List<Set<Map>> found: ArrayList<Set<Map>> 五 List<Set> list = […]

导入通配符是否一直导入所有内容?

我正在研究一个小程序,并使用数组,所以我做了: import java.util.Arrays; 后来我开始扩展我以前做过的事情并决定我想从用户那里得到输入,所以在那时我添加了: import java.util.Scanner; 现在一个想法发生了。 我知道我可以这样做: import java.util.* 然后我只需要1个导入行而不是两个(或者我最终需要的很多),但导入中的通配符是否意味着它将导入该包中的所有内容 ,无论是否需要,或者只是选择性function被拉? 我的直觉是编写更多的代码,只包含我知道我需要的软件包,但是如果没有区别,为什么有人会导入更多级别/软件包呢? (我宁愿懒惰也少写代码)

不兼容的通用通配符捕获

在以下代码段中: package test; import java.util.Collection; import java.util.Iterator; import java.util.Map; public class WildcardsTest { private Iterator<Map.Entry<K, ? extends Collection>> iterator; public WildcardsTest(Map<K, ? extends Collection> map) { iterator = map.entrySet().iterator(); /* Type mismatch: cannot convert from Iterator<Map.Entry<K,capture#1-of ? extends Collection>> to Iterator<Map.Entry<K,? extends Collection>> */ } } 虽然类型似乎完全匹配,但分配不正确。 我已经设计了一个脏的解决方法,通过将Collection的类型指定为另一个generics参数,如下所示: public class WildcardsTest<K, V, C extends Collection> […]

Java可以连接到通配符ssl

我们希望购买通配符SSL证书,因为我们有很多子域名。 但是我不知道Java是否信任通配符证书。 当人们通过SSL连接到我们的API时,我们迫使我们与之通信的所有第三方将我们的SSL证书添加到他们的本地信任库中是不够的。 目前,我面临着从java受信任发行者购买通配符证书或每个子域购买多个证书的困境。 其他语言也有信任库吗? 如果是这样,任何人都知道通配符证书是否也适用于它们。

从java中的HashMap返回通配符匹配列表

我有一个Hashmap,可能在String中包含通配符(*)。 例如, HashMap students_; 可以将约翰*作为一把钥匙。 我想知道JohnSmith是否匹配student_中的任何元素。 我的字符串可能有几个匹配(John *,Jo * Smith等)。 有什么方法可以从我的HashMap中获取这些匹配的列表吗? 是否有另一个我可能正在使用的对象,它不需要我遍历我的集合中的每个元素,或者我是否必须将其吸取并使用List对象? 仅供参考,我的collections品中将包含少于200个元素,最终我想找到与最少量通配符匹配的对。