Tag:

以Class 为关键创建ImmutableMap的问题

我正在尝试创建一个将类映射到字符串的ImmutableMap (注意:这当然只是一个例子!)。 但是,像 ImmutableMap<Class, String> map = ImmutableMap.of( Integer.class, “Integer”, Date.class, “Date” ); 给我以下错误 Type mismatch: cannot convert from ImmutableMap<Class<? extends Object&Comparable&Serializable>,String> to ImmutableMap<Class,String> 奇怪的是,如果我将一个强制转换为Class到任何(!)的键,即 ImmutableMap<Class, String> map = ImmutableMap.of( Integer.class, “Integer”, Date.class, “Date”, (Class) String.class, “String”, long.class, “Long” ); 会工作得很好。 我有点对这种行为感到困惑:首先,为什么没有演员表它不起作用? 所有这些都是类,它实际上没有比Class更通用,所以为什么它不起作用? 其次,为什么任何一个键上的强制转换都能使它工作? (旁注:如果你想知道为什么我甚至想做这样的事情 – 是的,这是因为反思…) 编辑:我实际上只是发现这会起作用,但我仍然想了解上述行为 ImmutableMap<Class, String> map = ImmutableMap.<Class, String>builder() .put( […]

Java生成类引用

如果您有签名的方法: Class<? extends List> getObjectType() { return ?????; } 如何返回List类的正确通用版本? return List.class; //errors return List.class; //errors return List.class; //errors 处理这个问题的正确语法是什么?

Java类范围和库

我正在创建一个Java库,作为最终产品,打算将这个.jar分发给开发人员。 我正在从Objective-C“翻译”我的库,在那里我控制哪些类头文件可供开发人员使用。 换句话说,我只向开发人员展示他们可以处理的几个类。 在我的Java库中,我正在使用包,而且我的包已经变得非常大。 所以我决定将我的模型和控制器分成不同的包。 但是现在我希望保密的模型我需要标记为公共,以便从主包中使用。 我的问题是,这与我在Objective-C中做的事情有什么不同吗? 例如,我有一个Event类,它实际上只在内部使用,我不希望用户知道它或考虑它。 我有另一个类TimedEvent,用户可以获取一个管理实例。 在我的Objective-C中,我只是从库公共范围中排除了Event类,允许使用TimedEvent。 如果我在我的库中使事情变得更整洁,那么包装似乎不是那样的。 从现在开始,我的主控制器在主包中,所有模型都在另一个包中 – 被迫拥有一个公共范围。 意见?

如何确定Java类是否实现特定接口

我正在尝试使用reflection来确定传入的类是否实现了IsWdidget接口: public boolean isAWidget(Class clzz) { Class runtimeClass = ClassLoader.getSystemClassLoader().loadClass(clzz.getName()); Class[] impls = runtimeClass.getInterfaces(); for(Class clz : impls) if(clz.getName().equals(IsWidget.class.getName())) return true; return false; } 这是确定这个的最好/最有效的方法吗? 我还看到一个IsWidget.class.isAssignableFrom(Class)方法……

如何在Java中找到CPU密集型类?

我有一个使用multithreading的Java大程序。 在某些情况下,程序开始使用我的八核系统的三个核心中的100%。 在正常使用中,程序使用1-2%的所有核心。 如何找到超载核心的类?

Java的; 将基类转换为派生类

为什么我不能将基类实例转换为派生类? 例如,如果我有一个扩展C类的B类,为什么我不能这样做呢? B b=(B)(new C()); 或这个? C c=new C(); B b=(B)c; 好吧,让我更具体地说明我正在做什么。 这就是我所拥有的: public class Base(){ protected BaseNode n; public void foo(BaseNode x){ n.foo(x); } } public class BaseNode(){ public void foo(BaseNode x){…} } 现在我想创建一组扩展Base和Basenode的新类,如下所示: public class Derived extends Base(){ public void bar(DerivedNode x){ n.bar(x);//problem is here – n doesn’t have bar } } public […]

在Java中将多行读入扫描仪对象

我在弄清楚如何将多行用户输入读入扫描仪然后将其存储到单个字符串中时遇到了一些麻烦。 我到目前为止的内容如下: public static String getUserString(Scanner keyboard) { System.out.println(“Enter Initial Text:”); String input = “”; String nextLine = keyboard.nextLine(); while(keyboard.hasNextLine()){ input += keyboard.nextLine }; return input; } 那么主要方法的前三个陈述是: Scanner scnr = new Scanner(System.in); String userString = getUserString(scnr); System.out.println(“\nCurrent Text: ” + userString ); 我的目标是让用户输入文本后,只需按两次输入键,输入两次以显示回来的内容(按照“当前文字:”)。 另外我需要将字符串存储在main中的变量userString中(我必须在其他方法中使用此变量)。 任何有关这方面的帮助将非常感谢。 它是用于类的,我们不能使用数组或Stringbuilder或任何比while循环和基本字符串方法复杂得多的东西。 谢谢!

Java中的多重inheritance与否?

据说,Java语言只支持单inheritance。 但是,如何同时从Object和任何其他类inheritance? 这不是一个多重inheritance。 其次,我们需要inheritance所有11个Object方法? 我很难想象为什么我在I / O中需要它们,例如 最后,JDK 8将在接口中为我们提供默认方法实现,如果这可能会导致Java中的多重inheritance。 如果接口A为方法a()提供了默认实现,接口B也提供了另一个默认实现的a()方法,我们的自定义类C实现了两个接口并依赖于默认实现 – 那不是Diamond of Death吗?

用Java覆盖用户库类

我使用BlueJ for Mac编写java代码。 我添加了stdlib.jar库(来自princeton http://introcs.cs.princeton.edu/java/stdlib/ )。 在添加这个库之前,我有自己的类名为StdDraw.java(我在项目中使用的特定类)并复制/粘贴代码。 我还调整了一些代码并添加了一些新行。 由于我无法编辑库代码,我如何覆盖或扩展库类以添加其他function?

Java actionlistener action在不同的类中执行

我有两个类:主要的一个和一个叫做“Window”的类。 Window类中有一些按钮,是否可以让“主”类知道发生了什么? 简而言之,“Window”类中的按钮应该触发主类中的一些东西。 或者我应该在“Window”类中输入所有内容?