Java中动态和静态类型赋值之间的区别

给定以下类层次结构,以下语句的动态和静态类型是什么? 类层次结构: class Alpha {} class Beta extends Alpha {} class Gamma extends Alpha {} class Epsilon extends Alpha{} class Fruit extends Gamma{} class Golf extends Beta {} class Orange extends Fruit{} 对于以下每个语句,静态类型? 动态类型?: Fruit f = new Fruit(); Alpha a = f; Beta b = f; a = b; Gamma g = f; 我的回答/问题 […]

Java中基于文件的数据库

是否有任何库在java中创建使用文件作为数据库的程序,而您不必在要使用它的计算机上安装数据库服务?

找到所有匹配的子串,而不仅仅是“最扩展的”子串

代码 String s = “yzaaabccz”; Pattern p = Pattern.compile(“(a )+(b )+(c *)c”); Matcher m = p.matcher(s); while (m.find()) { System.out.println(m.group()); } 版画 aaabcc 哪个是对的。 但逻辑上,子串 aaabc aabcc aabc abcc abc 也匹配正则表达式。 那么,我怎样才能使代码找到那些子串呢,即不仅是最扩展的子串,还有它的子代码 ?

JSF和类型安全

当我挣扎了好几个小时后,我终于找到了那些烦人的ClassCastException来自哪里,我认为这是由Hibernate生成的,它是enum映射。 但它们来自我的JSF视图,我在其中传递了一个List 回到我的支持bean。 我的数据只包含枚举的值: public Role[] getRoles() { return Role.values(); } public Role[] getRoles() { return Role.values(); } 。 当我在User -class中测试roles的setter并得到这个时,我感到非常震惊: public void setRoles(List paramRoles) { System.out.println(paramRoles.get(0) instanceof Role); //output: false for(Role role : paramRoles){ …} //crashes with ClassCastException } 将List paramRoles更改为List paramRoles工作得很好。 这怎么可能? 这些generics不应该是类型安全的还是与JSF相关的类型擦除会导致整个类型的安全问题? 也不应该将h:selectManyCheckbox的返回值设为List ,就像我通过f:selectItems传入的一样?

将MultipartFile转换为java.io.File而不复制到本地计算机

我有一个Java Spring MVC Web应用程序。 从客户端到AngularJS,我上传文件并将其作为webservice发布到Controller。 在我的控制器中,我将其作为MultipartFile获取 ,我可以将其复制到本地计算机。 但我想将文件上传到Amazone S3存储桶。 所以我必须将其转换为java.io.File 。 现在我正在做的是,我将它复制到本地机器,然后使用jets3t上传到S3。 这是我在控制器中转换的方式 MultipartHttpServletRequest mRequest=(MultipartHttpServletRequest)request; Iterator itr=mRequest.getFileNames(); while(itr.hasNext()){ MultipartFile mFile=mRequest.getFile(itr.next()); String fileName=mFile.getOriginalFilename(); fileLoc=”/home/mydocs/my-uploads/”+date+”_”+fileName; //date is String form of current date. 然后我使用SpringFramework的FIleCopyUtils File newFile = new File(fileLoc); // if the directory does not exist, create it if (!newFile.getParentFile().exists()) { newFile.getParentFile().mkdirs(); } FileCopyUtils.copy(mFile.getBytes(), newFile); 因此它将在本地计算机中创建一个新文件。 那个文件我在S3上面了 S3Object […]

使用Java监视服务监视子文件夹

我正在使用watchKey来监听特定文件夹中的文件更改。 Path _directotyToWatch = Paths.get(“E:/Raja”); WatchService watcherSvc = FileSystems.getDefault().newWatchService(); WatchKey watchKey = _directotyToWatch.register(watcherSvc, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); while (true) { watchKey=watcherSvc.take(); for (WatchEvent event: watchKey.pollEvents()) { WatchEvent watchEvent = castEvent(event); System.out.println(event.kind().name().toString() + ” ” + _directotyToWatch.resolve(watchEvent.context())); watchKey.reset(); } } 它对我来说很好。 如果我修改raja文件夹中的文件,它会给我带路径的文件名。 但是,当我将一些文件放在像“E:/ Raja / Test”这样的子文件夹中时,它只给出了我放置它的路径,而不是文件名。 如何获取文件名?

构建包含其所有依赖项的JAR

这可能是一个非常基本的问题,但我担心我对Java知之甚少,我无法在任何地方找到答案。 我正在尝试构建一个依赖于TFS SDK的Ant库。 我按照指南设置项目,但当我将其导出为JAR并尝试使用ANT运行任务时,我收到以下错误: java.lang.NoClassDefFoundError: /com/microsoft/tfs/core/util/TFSUser 我意识到我可以将TFS SDK JAR放在我的ANT lib文件夹中,但是如果可能的话,我希望我的JAR能够包含它并且库只需要工作而不必这样做。 这个答案似乎说可以包含使用Eclipse运行所需的所有资源(我使用3.7.2),但它没有详细说明如何实际执行它。 Eclipse中有什么选项可以做到这一点?

如何在OS X Lion上安装JPype以与Neo4j一起使用?

我正在尝试将Neo4j用于一个项目,并希望通过Python与它进行交互,因为我是编程的新手并且不知道任何Java。 我正在按照安装说明操作 ,但我坚持第一步,即安装JPype。 我使用的是OS X 10.7(狮子)。 我认为我的配置非常标准,从Python网站下载的Python 2.7.2和从Apple网站下载的Java 1.6.0。 当我跑 % sudo python setup.py install 在JPype安装程序上,我得到大约100行关于各种.h文件的错误代码,然后它以行终止: lipo: can’t figure out the architecture type of: /var/tmp// ccwOzLi9.out error: command ‘gcc-4.2’ failed with exit status 1 我发现了一篇关于JPype的gcc错误的博客文章 ,但我按照那里的说明无济于事。 我还通过电子邮件发送了该post的作者,他告诉我从未实际使用过JPype,曾在OS X 10.6中工作过,并且没有任何见解。 我还通过电子邮件发送了JPype的创建者,他告诉我他只使用Windows,并且不知道如何在OS X上安装。但是如果我们可以解决这个问题,我可以指出他的答案,也许他可以添加JPype文档的解决方案,也帮助了很多其他人! 那么,有谁知道我做错了什么? 我想使用Neo4j,但我不懂Java,所以我完全不知道如何解决编译错误。 基于阅读所有可用的Google结果,我的两个运行理论是: 我在某种程度上使用32位版本的Python或Java(虽然我使用标准的官方安装,但无法弄清楚如何切换到64位或甚至可能) JPype文件只能使用GCC 4.0而不是4.2编译。 但我无法在网上找到有关如何回滚到GCC 4.0的任何内容(或者它是否附带2011款MacBook,并且有一些方法可以强制JPype使用它进行编译)。 还有另一个类似的问题 ,但解决方案是使用一个不同的适配器,通过REST而不是直接挂钩到Java。 如果必须,我会尝试,但如果可能的话,我宁愿使用推荐的Neo4j方法。

不能在不同方法中定义的内部类中引用非final变量i

我有“不能在一个不同方法中定义的内部类中引用非最终变量”错误…我哪里出错了?…我刚开始学习android和java编程.. public class Tictac extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button[] = new Button[9]; button[0]= (Button) findViewById(R.id.button1); button[1] = (Button) findViewById(R.id.button2); button[2] = (Button) findViewById(R.id.button3); button[3] = (Button) findViewById(R.id.button4); button[4] = (Button) findViewById(R.id.button5); button[5] = (Button) findViewById(R.id.button6); button[6] = (Button) […]

Java JRE与GCJ

我用Java编写的速度测试得到了这个结果: Java real 0m20.626s user 0m20.257s sys 0m0.244s GCJ real 3m10.567s user 3m5.168s sys 0m0.676s 那么,GCJ的目的是什么呢? 有了这个结果,我确定我不打算用GCJ编译它! 我在Linux上测试了这个,Windows中的结果可能比那更好吗? 这是应用程序的代码: public static void main(String[] args) { String str = “”; System.out.println(“Start!!!”); for (long i = 0; i < 5000000L; i++) { Math.sqrt((double) i); Math.pow((double) i, 2.56); long j = i * 745L; String string = new […]