它的工作方式背后的逻辑是什么?

时间:2017-05-17 14:54:42

标签: java deobfuscation

我已经阅读了一些棘手的面试问题,我已经看到了这个问题,我无法理解这背后的逻辑是什么。有人可以解释一下吗?

public class WebViewFragment extends Fragment {
private static final String LOG_TAG = WebViewFragment.class.getName();
private ProgressBar progressBar;
private View footerV;
private String urlToLoad;
private int footerVisibility;
private int failureCount = 0;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.web_fragment, container, false);
    try {
        init(rootView);
    } catch (Exception e) {
        Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(getActivity()));
    }
    return rootView;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    if (footerV != null) footerV.setVisibility(footerVisibility);
}

private void init(View rootView) {
    Bundle bundle = getArguments();
    ConstraintLayout navBarCL = (ConstraintLayout) rootView.findViewById(R.id.navBar);
    progressBar = (ProgressBar) rootView.findViewById(R.id.progressBar);
    if (bundle.getBoolean(BundleConstants.WEB_HIDE_HEADER)) {
        navBarCL.setVisibility(View.GONE);
    } else {
        navBarCL.setVisibility(View.VISIBLE);

        ImageView backButtonIV = (ImageView) rootView.findViewById(R.id.backButtonImage);
        backButtonIV.setOnClickListener(view -> navigateBack());

        String title = bundle.getString(BundleConstants.WEB_HEADER_TEXT);
        TextView headerTextTV = (TextView) rootView.findViewById(R.id.headerText);
        headerTextTV.setText(title);
    }

    WebView webView = (WebView) rootView.findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.setWebViewClient(getClient());
    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onCloseWindow(WebView window) {
            super.onCloseWindow(window);
            navigateBack();
        }
    });

    footerV = getActivity().findViewById(R.id.footer);
    footerVisibility = footerV.getVisibility();
    if (bundle.getBoolean(BundleConstants.WEB_SHOW_FOOTER)) {
        footerV.setVisibility(View.VISIBLE);
    } else {
        footerV.setVisibility(View.GONE);
    }

    urlToLoad = bundle.getString(BundleConstants.WEB_URL);
    Log.d(LOG_TAG, "Opening url :" + urlToLoad);
    webView.loadUrl(urlToLoad);
}

@NonNull
private WebViewClient getClient() {

    WebViewDatabase webViewDB = WebViewDatabase.getInstance(getActivity());
    webViewDB.clearHttpAuthUsernamePassword();
    return new WebViewClient() {
        @Override
        public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
            ++failureCount;
            showProgressBar();
            LoginDialog loginDialog = new LoginDialog(getContext(), getFragment(), handler, failureCount);
            loginDialog.show();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            hideProgressBar();
        }

    };

}

public void hideProgressBar() {
    if (progressBar != null) progressBar.setVisibility(View.GONE);
}

public void showProgressBar() {
    if (progressBar != null) progressBar.setVisibility(View.VISIBLE);
}

private WebViewFragment getFragment() {
    return this;
}

public String getUrlToLoad() {
    return urlToLoad;
}

protected void navigateBack() {
    footerV.setVisibility(footerVisibility);
    getFragmentManager().popBackStack();
}

}

输出

public class Test
{
    public static void main(String[] args) {
for(char c‮h = 0; c‮h < Character.MAX_VALUE; c‮h++)
    if (Character.isJavaIdentifierPart(c‮h) && !Character.isJavaIdentifierStart(c‮h))
            System.out.printf("%04x <%s>%n", (int) c‮h, "" + c‮h);
    }
}

1 个答案:

答案 0 :(得分:0)

这样:

CYGWIN_NT-10.0

相同
for(char c‮h = 0; c‮h < Character.MAX_VALUE; c‮h++)

但向后写....所以循环正常