Java Generic类型:有什么区别
(1) List <? extends Number>
(2) List <T extends Number>
Run Code Online (Sandbox Code Playgroud)
按照我的理解
(1)List <? extends Number>
是具有超类"数字"的"未知"数据类型的只读列表.我们只能读取元素但不能添加
(2)List <T extends Number>
超级"数字"的数据类型列表.我们可以读取元素并将其添加到列表中
请参阅下面的代码示例
class TestGen{
public static void main(String[] args) {
double result = 0.0;
List<Integer> intList = new ArrayList<Integer>();
intList.add(10);
intList.add(20);
intList.add(30);
result = TestGen.sumOfList1(intList);
System.out.println("Result=" + result);
result = TestGen.sumOfList2(intList);
System.out.println("Result=" + result);
}
public static double sumOfList1(List<? extends Number> list) {
double s = 0.0;
for (Number n : list) …
Run Code Online (Sandbox Code Playgroud) 我以编程方式创建了PDF文件.为此,我使用了HTML到PDF转换库.在我的PDF中,有一些网站页面的链接.
我已按照以下方式实现了html,然后以编程方式将其转换为PDF.
<a target="_blank" href="http://mywebsite_url_here.html">Link</a>
Run Code Online (Sandbox Code Playgroud)
但是当打开这个PDF到chrome或firefox浏览器并点击PDF中存在的任何链接时.链接打开是相同的TAB而不是新的TAB.请帮助找出解决方案.这样我的PDF就会驻留在一个标签页中,链接将在浏览器的另一个标签页中打开.
我已经尝试过了
target="_blank"
target="_top"
<a onclick="window.open ('http://mywebsite_url_here.html', '');
return false" href="javascript:void(0);"></a>
Run Code Online (Sandbox Code Playgroud)
但没有什么对我有用.
首先,这不是问题,而是我遇到的问题的解决方案,并浪费了4.5小时来找出解决方案.如果有更好的替代方法来管理eclipse项目的外部src文件夹,请告诉我.
我正在使用版本控制系统(GIT)来管理我的项目.还使用外部Git客户端访问存储库(SourceTree)
注意: SVN和tortoise SVN也可以使用相同的场景.
在Eclipse中:当我创建一个动态Web项目时,它还满足"src"和"WebContent"文件夹,而我想使用外部文件夹(我使用Git客户端从Git Repo结账)....我在google上做了很多搜索来映射或链接外部src和WebContent文件夹,但没有找到方法.最后我获得了成功.在这里发布此信息....所以可能对某人有用.
(1)假设您已查看位于"C:\ MyGitRepo \"的内容,其中包含2个文件夹"src"和"WebContent"
(2)在eclipse中创建动态web项目:将源文件夹名称设置为"src2"
源文件夹映射
(3)右键单击项目 - >新建 - >文件夹 - >高级 - >链接到备用位置 - >"C:\ MyGitRepo\src"
(3)右键单击项目 - >新建 - >源文件夹 - >浏览器 - >"src"
(4)删除"Src2"
Web内容文件夹映射
(5)删除现有的"WebContent"文件夹
(6)右键单击项目 - >新建 - >文件夹 - >高级 - >链接到备用位置 - >"C:\ MyGitRepo\WebContent"
(7)项目属性 - >部署程序集 - >添加文件夹 - >下一步 - >选择"WebContent"文件夹
一切正常......意味着工作区中没有src和web内容文件夹,而您正在使用外部文件夹
我们也可以使用eclipse插件这样做但是使用外部客户端(tortoise SVN或source tree)更方便
我正在使用Spring框架并能够成功上传服务器上的文件.
<form action="upload.do" method="post" enctype="multipart/form-data">
<input type="text" name="description" />
<input type="file" name="locationMapFile" />
........
........
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
//控制器层
@RequestMapping(value = "/upload.do", method = {RequestMethod.POST})
public String addEditLocationToCompany(Model model
,@RequestParam("description")String desc
,@RequestParam(value="locationMapFile", required=false) CommonsMultipartFile locationMapFileData)
{
}
Run Code Online (Sandbox Code Playgroud)
到现在一切都很好.现在我使用javascript在表单上添加一些动态隐藏参数.
注意:根据设置,我定义了动态参数名称及其值
<input type="hidden" name="setting_14" value="abcd">
<input type="hidden" name="setting_5" value="xyz">
Run Code Online (Sandbox Code Playgroud)
如何将这些动态参数提取到Spring控制器中.
我试过了
(1)我不能使用@RequestParam,因为不想硬编码参数名
(2)request.getParameter():不工作并返回null,因为这是multipart/form-data请求
(3)我使用过这个链接 如何使用JSP/Servlet将文件上传到服务器? 并尝试过
List<FileItem> items =
new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
Run Code Online (Sandbox Code Playgroud)
但在spring中,控制器项为空.所以无法迭代它并从中获取FileItem.
请帮我找出将动态参数的值放入spring框架的方法.
根据我在Java类中的知识
- 非静态同步方法:锁定特定对象的获取
- 静态同步方法:锁定类上的获取
我对此有点困惑,因为我们可以通过类名或对象名来调用静态方法.
请假设有4种方法,我的班级都是同步的.2个方法是静态的,2个是非静态的.如果我将创建我的类"obj1"的1个对象,并且还有2个线程Thread1和Thread2
问题1:如果我将尝试使用obj1(或类名)访问静态同步方法.这是否意味着"obj1"没有锁定只会锁定2个静态方法(类级别锁定)?意味着其他线程可以同时使用"obj1"访问非静态方法但不能访问静态方法吗?
问题2:如果我将尝试使用Thread1中的obj1 来访问非静态同步方法.这是否意味着Thread2只锁定了2个方法?表示Thread2可以访问2个静态方法,或者我们可以同时使用className(MyClass)访问静态方法
问题3:如果我班级中的所有方法都是静态的并且是同步的.这是否意味着没有对象级别锁定,并且所有线程只有一个类级别锁定.?
请解释一下关于班级锁定的一点点
提前致谢.