java重大疑惑,看过《java编程思想》的进

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java重大疑惑,看过《java编程思想》的进相关的知识,希望对你有一定的参考价值。

《java编程思想》
原书导入的包
import static net.mindview.util.Print.*;是可以使得print语句在原书作者所在电脑上编译成功的,我是想知道在什么情况下,导入一个包,加一句和他类似的什么东西,就可以省略System.out.直接可以用print

首先你要理解import static是什么意思,即静态导入。

静态导入是JDK1.5里面的新的特性

一般我们常写
import java.util.*;
意思是导入util包下的所有类,然后使用下面的语句用sort对alist进行排序。
Collections.sort(alist);

在jdk1.5中,我们可以写
import static java.util.Collections.*;
意思是导入Collections类的所有静态方法(注意只是静态方法),这样我们可以使用下面
的语句达到同样的效果:
sort(alist);

读到这里,可能很多人就要想了,System.out.println("");应该也可以写简单一点吧(我开始也是这么想的)。不好意思,呵呵,println是out的实例方法,非静态方法,不能用上面的简写的。

但是可以用一种变通的方法,自己实现一个静态的println,然后调用这个就行了。
参考技术A import static net.mindview.util.Print.*;这是静态导入。你说的那个程序在下面: 只要你按下面的程序来写。就可以静态的导入。
//: net/mindview/util/Print.java
// Print methods that can be used without
// qualifiers, using Java SE5 static imports:
package net.mindview.util;
import java.io.*;

public class Print
// Print with a newline:
public static void print(Object obj)
System.out.println(obj);

// Print a newline by itself:
public static void print()
System.out.println();

// Print with no line break:
public static void printnb(Object obj)
System.out.print(obj);

// The new Java SE5 printf() (from C):
public static PrintStream
printf(String format, Object... args)
return System.out.printf(format, args);

///:~

上面的那个程序就是你静态导入的类,你看看,它的方法都是静态的如:public static void print(Object obj) 。只要你也写这样一样类。里面都用静态的方法。并且用静态导入的方法来导入它就可以了。本回答被提问者采纳
参考技术B 把他的光盘拿过来 把里面的jar包加到classpath里 加一句import static net.mindview.util.Print.*;就行了

JAVA操作PDF的几个问题,是高手的进。

1.通过iText怎样对PDF加密(只是普通加密,非认证加密)。

2.在JSP页面中显示PDF时,怎样禁止右键菜单(只禁止右键菜单中的“打印”选项也行)。

3.在后台或在JSP页面中怎样启用/禁用PDF的“打印”功能(打印时不弹出属性对话框)。
看了iText的文档和api总算是实现了大部份的功能,下面就把实现CODE贴出来和大家分亨一下。。
第一种方法:
//屏蔽PDF菜单栏、工具栏(PdfWriter.HideMenubar | PdfWriter.HideToolbar | PdfWriter.HideWindowUI)
reader = new PdfReader(inputPath);
reader.setViewerPreferences(PdfWriter.HideMenubar);
//设置加密权限
PdfEncryptor.encrypt(reader,new FileOutputStream(outFile), readPassword.getBytes(), writePassword.getBytes(), 0, false);
//PdfWriter.AllowAssembly |PdfWriter.AllowFillIn|PdfWriter.AllowScreenReaders

上面的代码中被注释的代码是PDF的权限设置,将注释的代码替换0处,就可以实现对PDF文件权限的控制了。

第二种方法:
PdfReader reader = new PdfReader(annexPath);
PdfStamper stamper = new PdfStamper(reader, baos);
PdfWriter writer = stamper.getWriter();
stamper.setEncryption(null, "wwwwww".getBytes(), 0, false);
// 隐藏菜单栏、工具栏
writer.setViewerPreferences(PdfWriter.HideMenubar);
stamper.close();

1、我不清楚,没做过相关东西
2、通过js可以实现禁止右键行为
3、页面无法打印好像实现不了,因为浏览器有打印功能会将页面打印出来
参考技术A 加密必须在document.open()之前进行设置。

public void setEncryption(boolean strength, String password,
String ownwerPassWord, int permissions);

strength 是PdfWriter.strength40bits,PdfWriter.strength128bits,常量之一

password和ownwerPassWord可以为空或0的

permissions也是PdfWriter的常量PdfWriter.Allow开头的好几个。

以上是关于java重大疑惑,看过《java编程思想》的进的主要内容,如果未能解决你的问题,请参考以下文章

JAVA操作PDF的几个问题,是高手的进。

新手入门java比较常见的疑惑点(思想准备篇)

java中面向接口编程

Java编程思想 -- 内部类

3编程语言是个什么玩意儿

3编程语言是个什么玩意儿