Tag: 类型

具有多个子项的树的数组中的generics类型

我正在尝试实现一个有多个孩子的树,我需要以某种方式存储这些孩子。 我决定使用LinkedList但我想先尝试使用数组。 (我不想使用任何import货。) class Node<T extends Comparable> { Node arrChildren[] = new Node[size]; } 这不起作用。 class Node<T extends Comparable> { Comparable<Node> arrChildren[] = new Comparable[size]; T element; } 这有效,但我无法将arrChildren[0]与普通的Node ,如果我制作了所有Node的Comparable节点,我无法访问其中的元素。 这是我关于Stack溢出的第一篇文章我希望得到一个好的回应,我不介意批评。 谢谢。

如何使用自定义键类型使HashMap正常工作?

我认为我的问题很简单,但我找不到解决方案所以我决定在这里问一下。 我需要的是使用这样的自定义Key类型创建一个HashMap : HashMap<Pair, StrategyPoint> myMap = new HashMap<Pair, StrategyPoint> (); 但是我在这里遗漏了一些东西,因为HashMap停止正常工作。 首先,Key变得不唯一,并且可以在keySet找到具有相同值的Pair的不同实例。 包含键function也不像我想的那样工作:)。 我明显错过了一些东西,更有可能我应该以某种方式定义一种方法来比较我的Pair类中的实例。 但是我尝试在我的Pair类中使用compareTo实现Comparable,但它仍然无效。 有什么建议么? 我的原始代码有点混乱,读起来不友好,所以我举一个例子来说明我的问题。 这是代码: HashMap<Pair, StrategyPoint> myMap = new HashMap<Pair, StrategyPoint> (); Pair myPair = new Pair(2,2); StrategyPoint myPoint= new StrategyPoint(2, 2, 5, 5, false); myMap.put(myPair, myPoint); Pair searcher = new Pair (0,0); searcher.setFirst(2); searcher.setSecond(2); System.out.println(myMap.containsKey(searcher)); System.out.println(myMap.containsKey(myPair)); 执行的结果是: false true […]

在java中使用多种类型的值进行映射

我必须完成一个奇怪的特殊场景。 其描述如下: 我必须设计一个Map,其中’ Keys ‘总是String类型。 但是,其中一个键的’ Value ‘可能是String或List (取决于特定键可以具有的值的数量。如果该特定键只有一个值,则’Value’将是一个String,并且它必须如果密钥包含许多值,则为List。 如何完成这种情况? 例如:地图中有2个键,即“姓名”和“电话号码”。 一个人只能有一个姓名和多个电话号码。 所以这里的第一个键,即“Name”应该具有Value的’String’类型,而对于第二个键,即“Phone Nos”应该具有Value的’List’类型。 如何申报这样的地图。 可能吗?

Java Generics数组语法

以下声明指定了哪种数据结构? List[] myArray; 我认为它应该声明一个数组,其中每个元素是一个List (例如, LinkedList或ArrayList ),并要求每个List包含ArrayList对象。 我的推理: List someList; // A List of String objects List someList; // A List of ArrayList objects List[] someListArray; // An array of List of ArrayList objects 在运行一些测试之后,我确定它接受一个数组,其中每个元素都是LinkedList对象,并且没有指定LinkedList对象包含的内容。 因此List指定List必须包含的内容,但List[]指定List必须如何实现。 我错过了什么吗? 这是我的测试。 import java.util.ArrayList; import java.util.List; import java.util.LinkedList; public class Generics1 { public static void main(String[] args) { List[] […]

Javagenerics:为什么someObject.getClass()不返回Class ?

我希望从编译时间以及运行时方面来看, .getClass()提供正确类型的返回值不会有问题。 但我一定是错的。 public class _GetClassGenerics2 { static class MyClass { } public static void main(String[] args) { MyClass myInstance = new MyClass(); // here it works Class type = myInstance.getClass(); myMethod(myInstance); } public static void myMethod(T instance) { Class type = instance.getClass(); // java.lang.RuntimeException: Uncompilable source code – incompatible types // required: java.lang.Class // […]

AspectJ中的类型间声明的简短示例是什么,它certificate了该方法的有用性?

我首先考虑使用ITD来定义private static final Logger logger = …对于一些不相关的情况,但它看起来不像使用它作为演示示例的明显改进。 是否有一些标准/建议的ITD使用示例,人们应该将其用于教学目的?

切换java中的类型

在开始之前,我知道这个问题有很多答案可以提出替代方法。 我正在寻求对这种特殊方法的帮助,以确定是否可行,如果不可能,可能有效的类似方法。 我有一个方法,它接受一个超类,并根据传递的对象的类型调用一个方法。 例如: public void handle(Object o){ if (o instanceof A) handleA((A)o); else if (o instanceof B) handleB((B)o); else if (o instanceof C) handleC((C)o); else handleUnknown(o); 我不能修改子类型来覆盖handle()方法,正如这个答案所暗示的那样,因为我不拥有这些类。 所以我的方法就是instanceof 。 我想使用switch语句而不是if/else ,因为它更整洁。 我知道你只能打开基元和字符串,所以我要切换类名: switch(o.getClass().getCanonicalName()){ case “my.package.A”: handleA((A)o); break; case “my.package.B”: handleB((B)o); break; case “my.package.C”: handleC((C)o); break; default: handleUnknown(o); break; } 这里的问题是规范名称非常长(如12个子包),我不能在case语句中调用ClassName.class.getCanonicalName() ,因为Java不允许这样做。 所以我的下一个解决方案是Enum。 这是我遇到问题的地方。 我希望我的代码看起来像这样: […]

Java SQLData – 使用列表/数组转换为用户对象?

我正在学习如何使用SQLData并且在回送到我的对象时遇到问题。 我的Oracle类型看起来像这样: CREATE OR REPLACE TYPE activities_t AS OBJECT ( list activity_list_t; ); CREATE OR REPLACE TYPE activity_list_t AS TABLE OF activity_t; CREATE OR REPLACE TYPE activity_t AS OBJECT ( startDate DATE; endDate DATE; ); 我的Java看起来像这样: public class Activities implements SQLData { private String sqlType = “ACTIVITIES_T”; List list; // must have default ctor! public […]

如何将IEEE-11073 16位SFLOAT转换为Java中的简单浮点数?

标题不言自明:如何将IEEE-11073 16位SFLOAT转换为Java中的简单浮点数?

保留适合枚举的数据

大多数项目都有某种类型的数据,这些数据在发行版之间基本上是静态的,非常适合用作枚举,如状态,事务类型,错误代码等。例如,我只使用一个公共状态枚举: public enum Status { ACTIVE(10, “Active”); EXPIRED(11, “Expired”); /* other statuses… */ /* constructors, getters, etc. */ } 我想知道其他人在这些数据的持久性方面做了些什么。 我看到一些选项,每个选项都有一些明显的优点和缺点: 在状态表中保留可能的状态,并保留所有可能的状态域对象,以便在整个应用程序中使用 只使用枚举,不要保留可用状态列表,在我和我的DBA之间创建数据一致性圣战 保持状态并在代码中维护枚举,但不要将它们绑定在一起,从而创建重复的数据 我的偏好是第二种选择,虽然我的DBA声称我们的最终用户可能想要访问原始数据来生成报告,而不是持久化状态会导致数据模型不完整(反驳:这可以通过文档解决) 。 大多数人在这里使用会议吗? 人们对每个人的经历是什么,还有其他选择吗? 编辑: 在考虑了一段时间之后,我真正的持久性斗争来自于处理与数据库中的状态相关联的id值。 安装应用程序时,这些值将作为默认数据插入。 此时,它们具有可用作其他表中的外键的ID。 我觉得我的代码需要知道这些ID,以便我可以轻松检索状态对象并将它们分配给其他对象。 我该怎么办? 我可以添加另一个字段,比如“代码”,查看内容,或者只是按名称查找状态,这是icky。